We are creating a management solution for running internal operations in Indpro. It is super important as we are losing a lot of money and time doing management manually. This should be a very slim solution to start with and ready to be scalable.
This is a competitive assessment to find the best talent who can design this solution for us. Whoever gets the most of it done will be rewarded for exceptional work.
Step 1: Create Your Own Repository from This Template
- Make sure you are logged into your GitHub account
- At the top of this repository page, you will see a green button that says "Use this template"
- Click on "Use this template" button
Important: You must be signed in to GitHub to use this template
Before you start:
-
Sign in to your GitHub account (or create a free account at github.com)
-
Then click this link to access the template: [your-repository-url]
-
You will now see the green "Use this template" button
-
Click on "Create a new repository" from the dropdown menu
-
You will be taken to a new page to create your repository
Step 2: Configure Your New Repository
-
Repository name: Enter exactly this format:
inma-assessment-[your-full-name]-[current-date]- Replace
[your-full-name]with your actual name (use hyphens instead of spaces) - Replace
[current-date]with today's date in YYYY-MM-DD format - ✅ Good example:
inma-assessment-john-smith-2024-06-24 - ❌ Bad example:
my-projectorinma-test
- Replace
-
Repository visibility:
- VERY IMPORTANT: Select "Private" (not Public)
- This ensures other candidates cannot see your work
- If you accidentally make it public, go to Settings → General → Danger Zone → Change visibility
-
Include all branches: Leave this checked (it's usually checked by default)
-
Click the green "Create repository" button at the bottom
Step 3: Set Up Your Local Development Environment
If you're new to Git and GitHub, follow these detailed steps:
-
Install Git on your computer (if not already installed):
- Windows: Download from git-scm.com
- Mac: Install via Terminal:
xcode-select --install - Linux:
sudo apt-get install git(Ubuntu) or equivalent for your distro
-
Clone your repository to your computer:
- On your new repository page on GitHub, click the green "Code" button
- Copy the HTTPS URL (it will look like:
https://github.com/yourusername/inma-assessment-yourname-date.git) - Open Terminal/Command Prompt on your computer
- Navigate to where you want to store the project:
cd Desktop(or wherever you prefer) - Run:
git clone [paste-the-url-you-copied] - Example:
git clone https://github.com/johndoe/inma-assessment-john-smith-2024-06-24.git
-
Navigate into your project folder:
cd inma-assessment-[your-name]-[date]
Step 4: Verify Everything is Set Up Correctly
- Open the project folder in your favorite code editor (VS Code, Sublime Text, etc.)
- You should see this README.md file and the basic folder structure
- Run
git statusin your terminal - it should show you're on the main branch with no changes
Step 5: Start Working on the Assessment
- Create a development branch (recommended):
git checkout -b development
- Start building according to the requirements below
- Commit your changes regularly (at least once per day):
git add . git commit -m "Add user authentication feature" git push origin development
Step 6: Final Submission
-
Create your final README: Replace this template README with your own that includes:
- How to install and run your project
- Environment setup instructions
- API documentation
- Any special features you implemented
-
Push all your final changes:
git add . git commit -m "Final submission - completed assessment" git push origin development
-
Create a Pull Request:
- Go to your repository on GitHub
- Click "Compare & pull request" button
- Title it: "Assessment Submission - [Your Name]"
- In the description, briefly explain what you built and any special instructions
-
Share repository access:
- Go to your repository Settings → Manage access
- Click "Invite a collaborator"
- Add the email addresses provided by HR/Technical Lead
- This allows us to review your private repository
"I can't find the 'Use this template' button"
- Make sure you're logged into GitHub
- The button is green and located at the top right of the repository page
- If you still can't see it, try refreshing the page
"My repository is showing as public"
- Go to your repository Settings
- Scroll down to "Danger Zone"
- Click "Change repository visibility"
- Select "Make private"
"Git commands are not working"
- Make sure Git is installed on your computer
- Check that you're in the correct folder using
pwd(Mac/Linux) orcd(Windows) - Verify the repository URL is correct
"I made a mistake in my repository name"
- Go to your repository Settings
- At the top, you can rename your repository
- Make sure to follow the naming convention exactly
Need help with Git commands?
git status- See what files have changedgit add .- Add all changes to staginggit commit -m "your message"- Save changes with a messagegit push- Upload changes to GitHubgit pull- Download latest changes from GitHub
- A GitHub account (free)
- A code editor (VS Code recommended - it's free)
- Git installed on your computer
- Basic knowledge of command line/terminal
- Your preferred programming languages and frameworks installed
We are a software consulting company, and the two most important things we handle every day are projects and employees. This solution needs to streamline our project management and resource allocation processes.
You need to build a system with two main entities:
- Projects - Software projects that the company works on
- Users - Employees who work on these projects
Create a page that shows all projects in a table format. This table must include:
Required Table Columns (use your judgment for additional ones):
- Project Name
- Start Date
- End Date
- Status (Active, Completed, On Hold, etc.)
- Assigned Team Members (count or names)
- Progress Percentage
- GitHub/Bitbucket Repository Links
- Last Updated Date
Required Functionality:
- Search Bar: Users can search projects by name
- Filter Options: Filter by status, date range, assigned users
- Sorting: Click column headers to sort ascending/descending
- Pagination: If you have many projects, show 10-20 per page
- Action Buttons: Edit, Delete, View Details for each project
When someone clicks on a project from the list, show a detailed dashboard page with these specific sections:
Section 1: Top Statistics Cards (4 Cards Side by Side) Create 4 cards that display:
- Tickets Closed: Total number of completed Jira tickets
- Tickets In Progress: Tickets currently being worked on
- Tickets Not Started: Tickets in backlog/to-do status
- Tickets Left: Total remaining tickets (In Progress + Not Started)
Each card should show:
- Large number (the count)
- Small descriptive text
- Different background colors for each card
Section 2: Analytics Charts
- Time Period Selector: Dropdown to choose "Last 3 Months", "Last 6 Months", "Last Year", "All Time"
- Chart: Line graph or bar chart showing ticket completion over time
- User Filter: Dropdown to filter the chart by specific team member or "All Users"
- Legend: Show what each line/bar represents
Section 3: Team Section Display in a table or cards:
- List of all users assigned to this project
- For each user show:
- Name and profile picture (if available)
- Allocation percentage (e.g., "50%" means they work half-time on this project)
- Number of tickets they completed for this project
- Their current active tickets for this project
Create New Project Page: Build a form with these required fields:
- Project Name: Text input (required)
- Description: Textarea for project description
- Start Date: Date picker
- End Date: Date picker
- GitHub Repository URL: Text input for repository link
- Bitbucket Repository URL: Text input (alternative to GitHub)
- Project Manager: Dropdown to select a user
- Initial Team Members: Multi-select dropdown of users
Admin-Only Features (implement basic admin role):
- Dynamic Fields: Admin can add custom fields to projects (like "Client Name", "Budget", etc.)
- Edit Projects: Admin can modify any project details
- Delete Projects: Admin can remove projects (with confirmation dialog)
Setup Instructions for Candidates:
- Create a free Jira account at atlassian.com
- Create a project in Jira (can be a simple Kanban board)
- Generate an API token from Jira
- Use Jira REST API to connect your application
Required Jira Functionality:
- Auto-Create Jira Board: When user creates a project in your app, automatically create a corresponding Jira project/board
- Sync Ticket Data: Pull ticket information from Jira to display in your dashboard
- Ticket Status Mapping: Map Jira statuses to your 4 categories (Closed, In Progress, Not Started, Left)
- Real-time Updates: Refresh Jira data at least every hour, or provide a "Refresh" button
Create a page showing all users in a table with these columns:
- Profile Picture (placeholder if none)
- Full Name
- Email Address
- Department/Role
- Active Projects (count)
- Join Date
- Status (Active/Inactive)
- Actions (View, Edit, Delete buttons)
Required Features:
- Search by name or email
- Filter by department or status
- Sort by any column
- Add New User button
When clicking on a user, show their personal dashboard with:
User Information Section:
- Profile picture and basic details
- Contact information
- Current project assignments with allocation percentages
Performance Metrics: Display these specific statistics:
- Last Week: Number of tickets resolved in the past 7 days
- Last Month: Number of tickets resolved in the past 30 days
- Last Year: Number of tickets resolved in the past 365 days
- All Time: Total tickets ever resolved
Current Projects Section:
- List all projects this user is assigned to
- Show their allocation percentage for each project
- Show their ticket count for each project
- Show current active tickets
Performance Charts:
- Monthly ticket completion trend (line graph)
- Project-wise ticket distribution (pie chart or bar chart)
Adding a New User (Required Integrations): When an admin adds a new user to the system, your application should:
- Create User Record: Save user details in your database
- GitHub Integration:
- Invite user to your GitHub organization
- Add them to relevant repositories
- Set appropriate permissions
- Jira Integration:
- Create Jira user account or invite existing user
- Add them to relevant Jira projects
- Assign appropriate Jira permissions
- Teams Integration (if you implement this):
- Add user to Microsoft Teams
- Add them to relevant Teams channels
Removing a User (Required Cleanup): When an admin deletes a user, your system must:
- Remove from GitHub: Remove user from organization and repositories
- Remove from Jira: Deactivate user or remove from projects
- Remove from Teams: Remove from Teams organization
- Data Cleanup:
- Reassign their open tickets to other users
- Keep historical data for reporting but mark user as inactive
- Remove from all project assignments
- Send Notifications: Email relevant project managers about the user removal
What you need to implement:
- Authentication using API tokens
- Create new projects/boards
- Fetch ticket data (issues)
- Get ticket status and assignee information
- Update ticket assignees when users are added to projects
Sample API Calls to Implement:
GET /rest/api/3/search- Get tickets/issuesPOST /rest/api/3/project- Create new projectGET /rest/api/3/project/{projectKey}/statuses- Get possible statuses
Required functionality:
- Add/remove users from organization
- Create repositories for new projects
- Manage repository permissions
- List user's repositories and contributions
If you implement Teams:
- Add/remove users from Teams
- Create channels for projects
- Send notifications about project updates
Design these database tables at minimum:
- Users Table: id, name, email, role, department, join_date, status, github_username, jira_account_id
- Projects Table: id, name, description, start_date, end_date, status, github_repo, jira_project_key, created_by
- Project_Users Table: id, project_id, user_id, allocation_percentage, assigned_date
- Dynamic_Fields Table: id, project_id, field_name, field_value (for admin-configurable fields)
Required Database Operations:
- CRUD operations for all entities
- Complex queries for dashboard statistics
- Data relationships between projects and users
- Historical data tracking for performance metrics
You can use any backend/frontend/database technology of your choice. Consider:
- Frontend: React, Vue.js, Angular, or vanilla JavaScript
- Backend: Node.js, Python (Django/Flask), Java (Spring), PHP (Laravel), etc.
- Database: PostgreSQL, MySQL, MongoDB, etc.
- Additional tools: Redis for caching, Docker for containerization
- Jira API - For ticket management and board creation
- GitHub/Bitbucket API - For repository management
- Microsoft Teams API - For user management (if applicable)
- Fast loading times for data tables
- Efficient handling of large datasets
- Responsive design for mobile and desktop
- Real-time or near real-time data updates
inma-assessment/
├── README.md (your detailed setup instructions)
├── .env.example
├── backend/
│ ├── (your backend code)
│ ├── models/
│ ├── controllers/
│ ├── routes/
│ ├── services/
│ └── config/
├── frontend/
│ ├── (your frontend code)
│ ├── components/
│ ├── pages/
│ ├── services/
│ └── utils/
├── database/
│ ├── migrations/
│ ├── seeders/
│ └── schema.sql
├── docs/
│ ├── api-documentation.md
│ ├── deployment-guide.md
│ └── user-manual.md
└── docker-compose.yml (optional)
- Single repository with organized folder structure
- Backend API with all required endpoints
- Frontend application with all specified features
- Database schema and migrations
- Detailed README.md with:
- Setup and installation instructions
- Environment configuration
- API documentation
- Deployment instructions
- Technology choices explanation
- .env.example file with all required environment variables
- Code comments and inline documentation
- Working Jira integration with API credentials
- GitHub/Bitbucket repository connections
- Teams integration (if implemented)
You will be judged on your skills to architect the solution, design the pages, and develop the system. Code quality will be taken into account as a major factor in the evaluation.
This assessment is designed to evaluate your complete software development capabilities across multiple dimensions. We want to see how you approach complex problems, make technical decisions, and deliver a professional solution.
- Solution Design: How well you structure the overall system
- Technology Choices: Appropriate selection of frameworks, libraries, and tools
- Scalability Planning: Architecture that can grow with business needs
- Database Design: Efficient schema design and relationships
- API Architecture: RESTful design principles and proper endpoint structure
- Security Architecture: Authentication, authorization, and data protection
- Clean Code Practices: Readable, maintainable, and well-organized code
- Code Structure: Proper separation of concerns and modular design
- Error Handling: Comprehensive error management and user feedback
- Performance: Efficient algorithms and optimized database queries
- Documentation: Clear comments and self-documenting code
- Testing: Unit tests and integration tests where appropriate
- Visual Design: Professional, clean, and modern interface
- User Experience: Intuitive navigation and user workflows
- Responsive Design: Works well on desktop, tablet, and mobile devices
- Accessibility: Proper semantic HTML and accessibility considerations
- Data Visualization: Clear and meaningful charts and statistics
- Interactive Elements: Smooth user interactions and feedback
- Feature Completeness: All required functionality implemented and working
- Integration Quality: Seamless connection with external APIs (Jira, GitHub, Teams)
- Data Management: Proper CRUD operations and data consistency
- Real-time Features: Live updates and dynamic content
- Deployment Ready: Production-ready configuration and setup
- Assessment Duration: [25th June 2025 - 1st July 2025]
- Submission Deadline: [1st July 2025]
- Ensure your repository is complete with all deliverables
- Create a comprehensive README with setup instructions
- Include a brief video demo (5-10 minutes) showcasing key features
- Send the repository link to [INSERT EMAIL]
- Be prepared for a technical discussion about your implementation
If you have questions about requirements or need clarification:
- Technical Questions: aashijit@indpro.se
- General Questions: hrd@indpro.se
- Originality: All code must be your own work
- External Libraries: You may use any open-source libraries and frameworks
- AI Tools: Please mention if you used any AI assistance in your README
- Testing: Include unit tests where appropriate
- Security: Implement proper authentication and authorization
- Start with MVP: Build core functionality first, then add enhancements
- Focus on UX: Create intuitive and user-friendly interfaces
- Document Everything: Clear documentation is highly valued
- Test Thoroughly: Ensure all features work as expected
- Think Scalability: Design with future growth in mind
Good luck, and we look forward to seeing your innovative solution for Indpro Manager!
Remember: This assessment is an opportunity to showcase your full-stack development skills, problem-solving ability, and understanding of business requirements. Quality over quantity - a well-implemented core solution is better than a half-finished complex one.