Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

School Management API

Nodejs restAPI for managing school data

Unique Features

  • Health Monitoring: System health checks with memory usage and uptime metrics
  • Rate Limiting: IP-based rate limiting (30 requests/min) to prevent abuse
  • Logging: Clean logs of all operations using debug library
  • OpenAPI/Swagger: Interactive API documentation page
  • Geospatial Search: Find schools sorted according to distance from user

Optimizations

  • Indexed Geolocation: Database indexing on latitude/longitude columns for faster queries
  • Connection Pooling: MySQL connection pool for efficient database connections
  • In-Memory Distance Sorting: Optimized distance calculations using Haversine formula
  • Response Caching: Built-in Express response caching for frequently accessed data

Project Structure

src/
├── config/
│   └── db.js         # Database configuration
├── controllers/
│   └── school.controller.js # controller logic
├── middleware/
│   ├── errorHandler.js     # error handling
│   └── rateLimiter.js     # rate limiting logic
├── models/
│   └── school.js          # database interaction logic
├── routes/
│   └── school.route.js
├── utils/
│   ├── geospatial.js
│   ├── asyncHandler       # wrapper for async operations
│   └── validator.js
├── openapi/
│   └── spec.yaml          # OpenAPI/Swagger spec file
└── server.js

API Documentation

Clear API docs swagger page generated from spec file available at /api-docs

Swagger UI

Environment variables

DBHOST=mysql-host
DBUSER=database-user
DBPASSWORD=database-password
DBPORT=database-port
DBNAME=schools
PORT=3000

Setup

# Install dependencies
npm install

# Start development server
npm run dev

# Run tests
npm test

API Endpoints

  • POST /api/v3/app/addSchool: Add a new school

  • GET /api/v3/app/listSchools: get list of schools sorted according to proximity

  • GET /health: System health status

Security Practices

  • Helmet.js: secure HTTP headers
  • CORS: cross-origin resource sharing
  • Input Validation: request validation
  • Rate Limiting: protection against abuse

Debug Modes

used debug library with the following namespaces:

  • app:server: main server operations
  • app:database: Database configuration
  • app:school-controller: controller file
  • app:school-model: operations on db

Future Scope

  • Redis Caching: Redis for caching frequently accessed data
  • Query Optimization: Database indexing and query optimization techniques
  • CAPTCHA Integration: CAPTCHA verification in frontend to prevent DDOS attacks
  • JWT Authentication: Role-based access control with JWT tokens
  • API Key Management: API key-based authentication for external services
  • Batch Operations: Bulk school data import/export
  • Real-time Updates: WebSocket integration for live data updates

About

nodejs api for school management

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages