api.scheduler.nas

E2E
Technical Documentation
Docker Builds
Cross-Node18,19,20

Inspiration

During my college years, I found that teachers, students & myself would often have to
stand outside the dean's office for long hours. I found this very disturbing as a Computer
Science Engineering Student. I saw the potential of a software scheduler that would make
everyone's life easy.

From the technical side, my main source of motivation was the simplicity and elegance of https://www.when2meet.com

Description

Scheduler RESTFul API Server built using NestJS, Prisma, REST and PostgreSQL.

Built with ❤️on top of

About Scheduler.nas

Functional specs

Scheduler allows users to register, create and manage their calendar and events

  • User [Host&Guest] SignUp & SignIn
  • Create Events for every day
  • Create timeslots with availability status for events applicable for everyday
  • Schedule meetings/sessions based on available timeslots provided by the host

Technical methodologies followed

  • Modular architecture: Business Logic & Auth handled in separate modules, separating concerns.
  • HTTP requests are handled by Controllers
  • API documentation using nest/swagger module
  • Business logic is implemented in Services
  • Database interactions are handled using Prisma
  • Validation using NestJS Pipes
  • Data Transfer Object(DTO) pattern for transferring data between layers
  • Configuration management using .env files for development, test & prod configs
  • Authentication / Authorization, Event ownership by users
  • PassportJS, JWT tokens, Password hashing, salts
  • Unit tests using Jest
  • Supertest for E2E testing

Technical documentation using Compodoc

As NestJS is heavily inspired by Angular, we can generate the documentation about project
structure modules, controllers, services etc. I have generated the docs.

Find 'em here - https://jsfame.github.io/api.scheduler.nas/

Installation

npm install -g pnpm
pnpm install

Running the app

Prerequisite for running the app in any mode - dev/test/prod

  • Copy .env.example with .env
  • Fill in the env vars in .env
# development
$ pnpm run start

# watch mode
$ pnpm run start:dev

# production mode
$ pnpm run start:prod

Test

# unit tests
$ pnpm run test

# e2e tests
$ pnpm run test:e2e

# test coverage
$ pnpm run test:cov

License

This repo is MIT licensed.

results matching ""

    No results matching ""