Here is the test assignment.
https://bitbucket.org/deby3/assignment/src/main/
ποΈ Project Architecture
skill-test/
βββ frontend/ # React + TypeScript + Material-UI
βββ backend/ # Node.js + Express + PostgreSQL
βββ DotNET-service/ # .NET microservice for PDF reports
βββ seed_db/ # Database schema and seed data
βββ README.md # This file
Node.js (v16 or higher)
PostgreSQL (v12 or higher)
.NET SDK (v10 or higher)
npm or yarn
cd backend
npm install
cp .env.example .env # Configure your environment variables
npm start
cd frontend
npm install
npm run dev
Database Setup (if needed)
# Create PostgreSQL database
createdb school_mgmt
# Run database migrations
psql -d school_mgmt -f seed_db/tables.sql
psql -d school_mgmt -f seed_db/seed-db.sql
Demo Credentials
Email: admin@school-admin.com
Password: 3OU4zn3q6Zh9
Build PDF Report Generation Microservice via API Integration
Objective : Create a standalone microservice in .NET to generate PDF reports for students by consuming the existing Node.js backend API.
Location : DotNET-service/ directory at the root of the project.
Description : This service connects to the existing Node.js backend's /api/v1/students/:id endpoint to fetch student data, then uses the returned JSON to generate a downloadable PDF report.
Issue : Implement missing CRUD operations for student management.
Skills Tested : .NET, REST API consumption, JSON parsing, file generation, microservice integration.
Create a new endpoint GET /api/v1/students/:id/report in the .NET service.
The .NET service must not connect directly to the database β it must fetch data from the Node.js API.
The developer must have the PostgreSQL database and the Node.js backend running to complete this task.
Technology
Details
Framework
React 18 + TypeScript
UI Library
Material-UI (MUI) v6
State Management
Redux Toolkit + RTK Query
Form Handling
React Hook Form + Zod validation
Build Tool
Vite
Code Quality
ESLint, Prettier, Husky
Technology
Details
Runtime
Node.js
Framework
Express.js
Database
PostgreSQL
Authentication
JWT + CSRF protection
Password Hashing
Argon2
Email Service
Resend API
Validation
Zod
Technology
Details
Primary DB
PostgreSQL
Schema
Comprehensive school management schema
Features
Role-based access control, leave management, notice system
Dashboard : User statistics, notices, birthday celebrations, leave requests
User Management : Multi-role system (Admin, Student, Teacher, Custom roles)
Academic Management : Classes, sections, students, class teachers
Leave Management : Policy definition, request submission, approval workflow
Notice System : Create, approve, and distribute notices
Staff Management : Employee profiles, departments, role assignments
Access Control : Granular permissions system
JWT-based authentication with refresh tokens
CSRF protection
Role-based access control (RBAC)
Password reset and email verification
Secure cookie handling
π§ Development Guidelines
File Naming : kebab-case for consistency across OS
Import Style : Absolute imports for cleaner code
Code Formatting : Prettier with consistent configuration
Git Hooks : Husky for pre-commit quality checks
frontend/src/
βββ api/ # API configuration and base setup
βββ assets/ # Static assets (images, styles)
βββ components/ # Shared/reusable components
βββ domains/ # Feature-based modules
β βββ auth/ # Authentication module
β βββ students/ # Student management
β βββ notices/ # Notice system
β βββ ...
βββ hooks/ # Custom React hooks
βββ routes/ # Application routing
βββ store/ # Redux store configuration
βββ theme/ # MUI theme customization
βββ utils/ # Utility functions
backend/src/
βββ config/ # Database and app configuration
βββ middlewares/ # Express middlewares
βββ modules/ # Feature-based API modules
β βββ auth/ # Authentication endpoints
β βββ students/ # Student CRUD operations
β βββ notices/ # Notice management
β βββ ...
βββ routes/ # API route definitions
βββ shared/ # Shared utilities and repositories
βββ templates/ # Email templates
βββ utils/ # Helper functions
π§ͺ Testing Instructions
Set up the PostgreSQL database using the files in seed_db/.
Set up and run the Node.js backend by following the Backend Setup instructions.
Run the .NET service.
Use curl or Postman to make a GET request to the .NET service's /api/v1/students/:id/report endpoint.
Verify that the .NET service correctly calls the Node.js backend and that a PDF file is successfully generated.
Check the contents of the PDF for correctness.
Method
Endpoint
Description
POST
/api/v1/auth/login
User login
POST
/api/v1/auth/logout
User logout
GET
/api/v1/auth/refresh
Refresh access token
Method
Endpoint
Description
GET
/api/v1/students
List all students
POST
/api/v1/students
Create new student
PUT
/api/v1/students/:id
Update student
DELETE
/api/v1/students/:id
Delete student
Method
Endpoint
Description
GET
/api/v1/notices
List notices
POST
/api/v1/notices
Create notice
PUT
/api/v1/notices/:id
Update notice
DELETE
/api/v1/notices/:id
Delete notice
Create a new repository on GitHub or Bitbucket.
Add your test result: git add .
Commit your changes: git commit -m 'Add CRUD operations for test'
Push to the branch: git push origin main
This project is licensed under the MIT License β see the LICENSE file for details.
For questions and support: