Skip to content
This repository was archived by the owner on Jun 2, 2025. It is now read-only.

NE-Practices/NE_Restful_BE

Repository files navigation

Parking Management System API

A RESTful API for managing parking spaces, car entries/exits, and user management.

Features

  • User Management (Admin and User roles)
  • Parking Space Management
  • Car Entry/Exit Management
  • Ticket Generation
  • Email Notifications
  • Parking Statistics

Prerequisites

  • Node.js (v14 or higher)
  • PostgreSQL
  • npm or yarn

Setup

  1. Clone the repository

  2. Install dependencies:

    npm install
  3. Create a .env file in the root directory with the following variables:

    PORT=3000
    DATABASE_URL="postgresql://postgres:your_password@localhost:5432/parking_management"
    JWT_SECRET="your-super-secret-jwt-key"
    JWT_EXPIRES_IN="24h"
    SMTP_HOST="smtp.gmail.com"
    SMTP_PORT=587
    SMTP_USER="your-email@gmail.com"
    SMTP_PASS="your-app-specific-password"
    SMTP_FROM="Parking Management System <your-email@gmail.com>"
  4. Set up the database:

    npx prisma migrate dev
  5. Start the server:

    npm start

API Endpoints

Authentication

  • POST /api/auth/register - Register a new user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user

Users

  • GET /api/users - Get all users (Admin only)
  • GET /api/users/:id - Get user by ID
  • PUT /api/users/:id - Update user
  • DELETE /api/users/:id - Delete user

Parking

  • POST /api/parkings - Create parking (Admin only)
  • GET /api/parkings - Get all parkings
  • GET /api/parkings/:id - Get parking by ID
  • PUT /api/parkings/:id - Update parking (Admin only)
  • DELETE /api/parkings/:id - Delete parking (Admin only)
  • GET /api/parkings/:id/stats - Get parking statistics (Admin only)

Parking Sessions

  • POST /api/parking-sessions/entry - Request car entry
  • POST /api/parking-sessions/:id/exit - Request car exit
  • GET /api/parking-sessions/my-sessions - Get user's parking sessions
  • GET /api/parking-sessions/entry-requests - Get entry requests (Admin only)
  • GET /api/parking-sessions/exit-requests - Get exit requests (Admin only)
  • POST /api/parking-sessions/:id/approve-entry - Approve entry (Admin only)
  • POST /api/parking-sessions/:id/approve-exit - Approve exit (Admin only)
  • GET /api/parking-sessions/active - Get active sessions (Admin only)

Database Schema

User

  • id: String (UUID)
  • firstName: String
  • lastName: String
  • email: String
  • password: String
  • role: Role (ADMIN, USER)
  • status: UserStatus (ACTIVE, INACTIVE)
  • createdAt: DateTime
  • updatedAt: DateTime

Parking

  • id: String (UUID)
  • parkingCode: String
  • parkingName: String
  • location: String
  • availableSpaces: Int
  • chargingFeePerHour: Float
  • createdAt: DateTime
  • updatedAt: DateTime

ParkingSession

  • id: String (UUID)
  • ticketNumber: String
  • plateNumber: String
  • userId: String
  • parkingId: String
  • entryDateTime: DateTime
  • exitDateTime: DateTime
  • chargedAmount: Float
  • status: SessionStatus
  • createdAt: DateTime
  • updatedAt: DateTime

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors