A comprehensive presentation room booking system for university students and teachers, built with Node.js and Oracle Database 11g.
- Node.js (Latest LTS version)
- Oracle Database 11g running
- Oracle Instant Client installed and configured
-
Clone the repository and install dependencies:
npm install
-
Configure environment variables: Create a
.envfile in the root directory:DB_USER=your_oracle_username DB_PASSWORD=your_oracle_password DB_CONNECT_STRING=your_connection_string PORT=3000
-
Start the application:
npm start
-
Access the application:
- Open your browser and go to
http://localhost:3000
- Open your browser and go to
- β User registration and login
- β View available rooms and time slots
- β Book presentation slots with conflict prevention
- β Generate printable booking tokens
- β View booking history and manage bookings
- β Cancel bookings (with restrictions)
- β User registration and login
- β Create new rooms with custom time availability
- β Auto-generate 30-minute time slots
- β View all bookings across all rooms
- β Manage room availability and schedules
- β Edit room details (with booking restrictions)
- β Session-based authentication with secure cookies
- β Responsive design for mobile and desktop
- β Real-time availability checking
- β Token-based booking verification
- β Comprehensive error handling
- Runtime: Node.js (Latest LTS)
- Server: Custom HTTP server (built with Node.js
httpmodule) - Database: Oracle Database 11g with
oracledbdriver - Authentication: Session-based with HTTP-only cookies
- Security: SHA-256 password hashing
- Routing: Manual URL-based routing system
- Markup: HTML5 with semantic elements
- Styling: CSS3 with modern features (backdrop-filter, flexbox, grid)
- Interactivity: Vanilla JavaScript (ES6+)
- Responsive: Mobile-first design with media queries
{
"dotenv": "^17.2.2",
"oracledb": "^6.9.0"
}- Oracle Database: 11g or higher
- Instant Client: Version 23.9 (located at
C:\instantclient_23_9) - Tables: Students, Teachers, Rooms, Slots, Bookings, Sessions
presentation-room-booking/
βββ app.js # Main server application
βββ package.json # Node.js dependencies and scripts
βββ .env # Environment variables (configure this)
βββ TECH_STACK.md # Detailed tech stack documentation
βββ README.md # This file
βββ test-oracle-connection.js # Database connection testing
β
βββ db/ # Database layer
β βββ oracle.js # Oracle connection and query utilities
β βββ schema-oracle11g.sql # Database schema and setup
β
βββ routes/ # API route handlers
β βββ auth.js # Authentication (login/register/logout/check)
β βββ student.js # Student operations (bookings, slots)
β βββ teacher.js # Teacher operations (rooms, bookings)
β
βββ views/ # HTML templates
β βββ index.html # Landing page
β βββ login.html # User authentication
β βββ register.html # User registration
β βββ dashboard_student.html # Student dashboard
β βββ dashboard_teacher.html # Teacher dashboard
β βββ bookings.html # Student bookings management
β βββ slots.html # Available slots browser
β βββ rooms.html # Teacher rooms management
β βββ teacher_bookings.html # All bookings overview
β βββ token.html # Booking token display
β
βββ public/ # Static assets
βββ favicon.ico # Website favicon
βββ css/
β βββ style.css # Main stylesheet
βββ js/
β βββ script.js # Client-side utilities
βββ images/ # Image assets (logo, icons)
POST /api/auth/register- User registrationPOST /api/auth/login- User authenticationPOST /api/auth/logout- User logoutGET /api/auth/check- Session validation
GET /api/student/slots- Get available slotsPOST /api/student/book- Book a slotGET /api/student/bookings- Get user's bookingsDELETE /api/student/bookings/:id- Cancel bookingGET /api/student/token/:code- Get booking token
POST /api/teacher/create-room- Create new room with slotsGET /api/teacher/rooms- Get all roomsPUT /api/teacher/rooms/:id- Update room detailsDELETE /api/teacher/delete-room- Delete roomGET /api/teacher/bookings- Get all bookingsDELETE /api/teacher/delete-slot- Delete slot
- Students: Student accounts (student_id, name, email, password, batch, dept)
- Teachers: Teacher accounts (teacher_id, name, email, password)
- Rooms: Presentation rooms (room_id, room_no, date_available, time_from, time_to)
- Slots: Time slots (slot_id, room_id, date, time_start, time_end, status)
- Bookings: Room bookings (booking_id, student_id, slot_id, token_code, booking_time)
- Sessions: User sessions (session_id, user_id, role, created_at)
- Students β Bookings (one-to-many)
- Teachers β Rooms (one-to-many)
- Rooms β Slots (one-to-many)
- Slots β Bookings (one-to-one)
- OS: Windows 11 (configured for Oracle Instant Client)
- Node.js: Latest LTS version
- Oracle: Database 11g with Instant Client 23.9
- Browser: Modern browsers with ES6+ support
- Process Management: Use PM2 for production deployment
- Reverse Proxy: Nginx recommended for static file serving
- SSL/TLS: HTTPS required for secure cookie transmission
- Database: Implement connection pooling for high traffic
- Environment: Use separate production .env configuration
- β Password hashing (SHA-256)
- β HTTP-only session cookies
- β Session expiration (24 hours)
- β SQL injection prevention (parameterized queries)
- β CORS headers configuration
- β Input validation and sanitization
- Postman: API testing and documentation
- Browser DevTools: Frontend debugging and testing
- Oracle SQL Developer: Database management and queries
Once you've configured your Oracle database connection in the .env file, simply run npm start and access http://localhost:3000 to begin using the Presentation Room Booking System!
Version: 1.0.0 Last Updated: December 2024