A collection of web development lab assignments covering full-stack development with Node.js, Express, and modern frontend technologies. All applications use in-memory storage for simplicity and portability.
This repository contains 9 complete full-stack web applications, each demonstrating different concepts in web development:
- Todo App - Task management with CRUD operations
- Counter App - Real-time counter synchronization
- User Form - User registration and data validation
- Quote Generator - Random quotes with favorites
- Event Planner - Event scheduling with date filtering
- Recipe App - Recipe management system
- Book Review App - Book reviews with ratings
- Freelance App - Project bidding platform with authentication
- Job Board App - AI-powered job matching with recommendations
All labs feature modern, gradient-themed UIs with responsive designs.
- Node.js - Runtime environment
- Express.js - Web framework
- bcrypt - Password hashing (Labs 8-9)
- jsonwebtoken (JWT) - Authentication (Labs 8-9)
- CORS - Cross-origin resource sharing
- HTML5 - Structure
- CSS3 - Styling with gradients and animations
- JavaScript (ES6+) - Client-side logic
- Fetch API - HTTP requests
- In-Memory Arrays - All data stored in memory (no database required)
Port: 5000
Features:
- Add, view, and delete todos
- Simple task management
- Clean blue gradient UI
Endpoints:
GET /todos- Get all todosPOST /todos- Add new todoDELETE /todos/:id- Delete todo
Port: 5000
Features:
- Increment, decrement, and reset counter
- Server-side state synchronization
- Real-time updates
Endpoints:
GET /count- Get current countPOST /count- Update count
Port: 5000
Features:
- User registration form
- Display all registered users
- Form validation
Endpoints:
GET /users- Get all usersPOST /users- Register new user
Port: 5000
Features:
- Random quote generation
- Favorite quotes system
- Inspirational content
Endpoints:
GET /quote- Get random quoteGET /favorites- Get favorite quotesPOST /favorites- Add to favorites
Port: 5000
Features:
- Create and manage events
- Filter events by date
- Event scheduling
Endpoints:
GET /events- Get all eventsPOST /events- Create new eventGET /events/filter- Filter events by date
Port: 5000
Features:
- Add and browse recipes
- Recipe details with ingredients
- Delete recipes
- Pre-loaded sample recipes
Endpoints:
GET /recipes- Get all recipesPOST /recipes- Add new recipeDELETE /recipes/:id- Delete recipe
Port: 5001
Features:
- Submit book reviews
- Star ratings (1-5)
- Filter reviews by rating
- Edit and delete reviews
- Pre-loaded sample reviews
Endpoints:
GET /reviews- Get all reviewsPOST /reviews- Add new reviewGET /reviews/filter- Filter by ratingPUT /reviews/:id- Update reviewDELETE /reviews/:id- Delete review
Port: 5002
Features:
- User authentication (JWT)
- Post and browse projects
- Bidding system
- User-specific project management
- Secure password hashing with bcrypt
Endpoints:
POST /register- Register new userPOST /login- Login userGET /projects- Get all projectsPOST /projects- Create project (authenticated)POST /bids- Submit bid (authenticated)GET /bids/:id- Get project bidsDELETE /projects/:id- Delete project (authenticated)
Sample Users:
- Username:
john_doe, Password:password123 - Username:
jane_smith, Password:password456
Port: 5003
Features:
- User authentication with JWT
- Post job listings
- AI-powered job recommendations (skill matching)
- Application system
- Search and pagination
- Applicant tracking
- Match score calculation
Endpoints:
POST /register- Register with skillsPOST /login- Login userGET /jobs- Get all jobs (paginated, searchable)GET /jobs/recommended- Get AI-recommended jobsPOST /jobs- Post new job (authenticated)POST /applications- Apply to job (authenticated)GET /applications/:job_id- View applicantsDELETE /jobs/:id- Delete job (authenticated)
Sample Users:
- Username:
alice, Password:password123, Skills:JavaScript, React, Node.js - Username:
bob, Password:password123, Skills:Python, Django, Machine Learning
AI Recommendation: The system uses keyword matching to compare user skills with job requirements and provides a match score. Top 3 matching jobs are recommended.
- Node.js (v14 or higher)
- npm (comes with Node.js)
Navigate to each lab folder and install dependencies:
# Lab 1
cd Lab1/todo-app
npm install
# Lab 2
cd Lab2/counter-appInitialize
npm install
# Lab 3
cd Lab3/user-form
npm install
# Lab 4
cd Lab4/quote-generator
npm install
# Lab 5
cd Lab5/event-planner
npm install
# Lab 6
cd Lab6/recipe-app
npm install
# Lab 7
cd Lab7/book-review-app
npm install
# Lab 8
cd Lab8/freelance-app
npm install
# Lab 9
cd Lab9/job-board-app
npm installOr use this one-liner to install all:
for lab in Lab{1..9}/*-app*/; do (cd "$lab" && npm install); doneEach lab runs independently. Navigate to the lab folder and start the server:
# Example: Run Lab 1
cd Lab1/todo-app
npm start
# or
node server.jsThen open your browser to:
- Labs 1-6: http://localhost:5000
- Lab 7: http://localhost:5001
- Lab 8: http://localhost:5002
- Lab 9: http://localhost:5003
Note: Only run one lab at a time for Labs 1-6 since they share the same port.
- ๐จ Modern gradient themes (unique for each lab)
- ๐ฑ Responsive design (mobile-friendly)
- โจ Smooth animations and transitions
- ๐ฏ Card-based layouts
- ๐ Beautiful color schemes
- ๐ Secure authentication (Labs 8-9)
- ๐ RESTful API design
- ๐พ In-memory storage (no database setup needed)
- โ Input validation
- ๐ CORS enabled
- โก Vanilla JavaScript (no frameworks)
- ๐ฏ Clean and maintainable code
- ๐ Real-time updates
- ๐ Search and filtering (Labs 5, 7, 9)
- ๐ Pagination (Lab 9)
-
Registration/Login (Labs 8-9)
- Register a new user
- Login with credentials
- Verify JWT token storage
-
CRUD Operations
- Create new items
- Read/view items
- Update items (Lab 7)
- Delete items
-
Special Features
- Test AI recommendations (Lab 9)
- Try bidding system (Lab 8)
- Use search and filters
- Test pagination
Each lab with authentication comes pre-loaded with sample users and data:
- Lab 8: 2 users, 2 projects, 2 bids
- Lab 9: 2 users, 3 jobs, 0 applications
Default password for all sample users: password123
By completing these labs, you'll learn:
-
Full-stack Development
- Building REST APIs with Express.js
- Creating responsive frontends
- Client-server communication
-
Authentication & Security
- Password hashing with bcrypt
- JWT token-based authentication
- Secure route protection
-
Data Management
- CRUD operations
- In-memory data structures
- State management
-
Advanced Features
- Search and filtering
- Pagination
- AI-powered recommendations
- Real-time updates
-
UI/UX Design
- Modern CSS techniques
- Responsive layouts
- User experience optimization
This is a learning repository. Feel free to:
- Add new features
- Improve UI/UX
- Fix bugs
- Add more labs
MIT License - Feel free to use for learning purposes
Created as part of TPDS (Technologies for Parallel and Distributed Systems) coursework.
Happy Coding! ๐