Skip to content

A take-home assignment for fullstack candidates to assess practical skills in relational database design, REST API development, and frontend implementation using ReactJS.

Notifications You must be signed in to change notification settings

gearment/fullstack-homework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 

Repository files navigation

Gearment Fullstack Homework

A take-home assignment for evaluating fullstack engineers with a focus on relational database design, REST API development, and responsive UI implementation using ReactJS.

๐Ÿ“˜ Objective

Design and implement a simple Leave Management System where employees can request leave and managers can approve/reject them.

๐Ÿ“Œ Basic Requirements (For All Candidates)

These are required for Junior, Mid, and Senior candidates.

๐Ÿ—„๏ธ Backend

  • POST /login with mock or hardcoded login (employee vs. manager)
  • POST /leave-request: Submit a new leave request
  • GET /leave-request: View your own leave requests
  • PATCH /leave-request/:id: Approve/reject (manager only)
  • GET /leave-balance: Show available leave days
  • Design relational schema with:
    • users table
    • leave_requests table
    • leave_balances table

๐Ÿ’ป Frontend (React)

  • Login switch for user role (employee/manager)
  • Dashboard:
    • Display leave balance
    • Table of previous leave requests
  • Form to submit leave request
  • Manager view to approve/reject requests
  • Responsive layout using Bootstrap

๐ŸŸข Junior-Level โ€“ Optional Extras

These are optional, but will help you stand out.

  • Basic frontend form validation (e.g. required fields, valid dates)
  • Filter or sort leave requests table by status or date
  • Use reusable React components (FormGroup, TableRow, etc.)
  • Meaningful commit history and README

๐ŸŸก Mid-Level โ€“ Additional Requirements

If youโ€™re applying for a Mid-Level position, you are expected to complete some of the following.

  • Add support for leave types (annual, sick, unpaid)
  • Block overlapping leave requests
  • Backend folder structure: handlers/, services/, repos/
  • Frontend folder structure: components/, pages/, services/
  • 1โ€“2 backend unit tests for key logic
  • Include Dockerfile or docker-compose.yml to run fullstack

๐Ÿ”ด Senior-Level โ€“ Advanced Requirements

If youโ€™re applying for a Senior role, you are expected to complete several of the following.

  • Apply Clean Architecture or layered design to backend
  • Middleware for Role-Based Access Control (RBAC)
  • 4โ€“5 unit/integration tests (e.g. for approval, validation, access control)
  • GitHub Actions (or CI pipeline) for test/lint/build
  • Add /docs/decisions.md with 3โ€“5 architecture or design decisions
  • Generate OpenAPI (Swagger) spec for API docs
  • Use React Context API or simple state management for leave state
  • Handle UI edge cases (e.g. error boundaries, toast feedback)

๐Ÿ“Ž Tip

  • Youโ€™re not expected to finish everything.
  • Prioritize clarity, structure, and engineering maturity over flashy features.
  • Bonus items are a chance to go deeper based on your experience level.

Good luck!

๐Ÿ“ฆ Folder Structure

fullstack-homework/
โ”œโ”€โ”€ frontend/           # React + Bootstrap
โ”œโ”€โ”€ backend/            # REST API
โ”œโ”€โ”€ database/           # SQL schema / migrations
โ”œโ”€โ”€ README.md           # This file
โ””โ”€โ”€ docker-compose.yml  # (Optional for fullstack setup)

๐Ÿ• Estimated Time

Working days: 7 days, bonus points come with the earlier submission

โœ… Submission Guidelines

  1. Fork this repository or upload to your GitHub
  2. Include setup steps in a README.md inside each folder (frontend/, backend/)
  3. Optionally deploy or record a demo video
  4. Submit the repo link for review

๐Ÿ“ฎ Questions?

If you have any questions or need clarifications, feel free to reach out to the hiring team at tech@gearment.com.

Good luck and have fun!

About

A take-home assignment for fullstack candidates to assess practical skills in relational database design, REST API development, and frontend implementation using ReactJS.

Topics

Resources

Stars

Watchers

Forks