This repository contains the candidate solution for the Nimble Gravity Frontend Challenge. It implements a React Single Page Application (SPA) designed to authenticate candidates, fetch open job listings from the provided Azure backend API, and allow the submission of a GitHub repository link as an application to those roles.
- Candidate Authentication: Securely captures the candidate's email, validates it against the backend, and persists session data.
- Job Listings Dashboard: Consumes the
/api/jobs/get-listendpoint, rendering available roles filtered by their active status. - Application Submission: Allows candidates to easily submit a GitHub repository URL to apply for any specific role.
- Robust Error Handling: Safely catches server-side and client-side errors, displaying comprehensive user-friendly alerts.
The application has been built strictly adhering to modern frontend standards and the challenge requirements:
- Framework: React (Bootstrapped via Vite)
- Language: TypeScript (Strict typing for robust API data models)
- Styling: Tailwind CSS v4 (Clean, modern utilities and aesthetic details)
- Routing: React Router DOM (Simulated SPA transitions)
- State Management: React Hooks (useState, useEffect)
- Tooling: pnpm (Package Manager)
If you are an evaluator or developer, follow these steps to run the application on your computer:
- Clone this repository and navigate to the root directory.
- Open your terminal and navigate into the nested
repositoriofolder. - Ensure your Node environment is active (the project assumes an environment managed by
nvm). - Install the dependencies using your package manager (
pnpm install). - Start the development server using
pnpm run dev. - Open your browser at the local port provided in the terminal (usually
http://localhost:5173).
All the source code implemented for the challenge resides inside the repositorio/src directory:
api/: Contains the isolatedclient.tsfetch wrapper for making network requests.components/: Contains modular UI elements like theJobCard.pages/: Contains the main routing views (EmailLoginandJobListing).types/: Contains the strictly defined TypeScript models corresponding to the API schemas.
The core focus of this implementation was code quality, separation of concerns, native HTTP handling without excessive dependencies, and a neat visual presentation as requested in the challenge prompt parameters.
Developed for the Nimble Gravity recruiting process.