This guide provides step-by-step instructions for starting both the Frontend and Backend servers for the Bells University Timetable Generator application.
Before starting the servers, ensure you have:
- β Java JDK installed (v17 or higher, currently using Java 25)
- β Gradle (included via gradlew wrapper)
- β Node.js installed (v14.0.0 or higher)
- β npm installed (comes with Node.js)
- β MySQL database server running
- β
Database configured and seeded (see
Database/seed_data.sql)
Open two separate terminal windows and run:
cd Backend/untitled2
./gradlew bootRuncd Timetable-generator
npm startRun this command from the project root to start both servers:
# Start Backend in new window
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd Backend/untitled2; ./gradlew bootRun"
# Start Frontend in new window
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd Timetable-generator; npm start"Backend/untitled2/
cd Backend/untitled2
./gradlew bootRun # Windows/Linux/Mac
# OR
gradlew.bat bootRun # Windows explicitlycd Backend/untitled2
./gradlew build
java -jar build/libs/untitled2-0.0.1-SNAPSHOT.jarcd Backend/untitled2
./gradlew clean build bootRun- Framework: Spring Boot 3.5.4
- Java Version: 25
- Port:
8080(default Spring Boot port) - URL:
http://localhost:8080 - Database: MySQL (JPA/Hibernate)
Create an application.properties file in Backend/untitled2/src/main/resources/ with:
# Server Configuration
server.port=8080
# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/timetable_db
spring.datasource.username=your_mysql_user
spring.datasource.password=your_mysql_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA/Hibernate Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
# Logging
logging.level.org.springframework=INFO
logging.level.com.example=DEBUGOpen browser and visit:
http://localhost:8080
You should see the Spring Boot application running (or check specific API endpoints).
Timetable-generator/
cd Timetable-generator
npm install # Install dependencies (first time only)
npm start # Start development servercd Timetable-generator
npm install # Install dependencies (first time only)
npm run build # Create production build- Port:
3000(default) - URL:
http://localhost:3000 - Auto-opens: Browser opens automatically
- Hot Reload: Changes auto-refresh
The browser should automatically open to:
http://localhost:3000
You should see the login page.
# Windows - Kill process on port 8080
netstat -ano | findstr :8080
taskkill /PID <PID> /F- β Check MySQL is running
- β
Verify
application.propertiescredentials - β
Ensure database exists:
timetable_db - β Check if data is seeded
cd Backend/untitled2
./gradlew clean
./gradlew build --refresh-dependenciesIf you see an error like FileLockContentionHandler ... Address already in use, it means a Gradle daemon process is stuck.
Fix: Stop all Gradle values before restarting:
cd Backend/untitled2
./gradlew --stop
./gradlew bootRun# Check Java version
java -version
# Should be Java 17 or higher (currently using Java 25)# Windows - Kill process on port 3000
netstat -ano | findstr :3000
taskkill /PID <PID> /Fcd Timetable-generator
rm -rf node_modules package-lock.json
npm install
npm start- β Ensure backend is running on port 8080
- β Check CORS settings in Spring Boot backend
- β Verify API endpoints in frontend code
# Windows PowerShell
Test-NetConnection -ComputerName localhost -Port 8080# Windows PowerShell
Test-NetConnection -ComputerName localhost -Port 3000# Windows - View Java processes
tasklist | findstr java
# Windows - View Node processes
tasklist | findstr nodeIn the terminal running the server, press:
Ctrl + C
# β οΈ WARNING: This stops ALL Java processes
taskkill /F /IM java.exe# β οΈ WARNING: This stops ALL Node.js processes
taskkill /F /IM node.exeOnce both servers are running:
| Service | URL | Purpose |
|---|---|---|
| Frontend | http://localhost:3000 | Main application UI |
| Backend API | http://localhost:8080 | REST API endpoints |
| Login Page | http://localhost:3000/login | Authentication |
| Dashboard | http://localhost:3000/dashboard | Main dashboard |
For testing purposes (check with your admin for current credentials):
Username: admin
Password: admin123
- Start Database (MySQL)
- Start Backend (Spring Boot on port 8080)
- Start Frontend (React on port 3000)
- Open Browser (http://localhost:3000)
# Morning startup
cd Backend/untitled2 && ./gradlew bootRun # Terminal 1
cd Timetable-generator && npm start # Terminal 2
# Make changes to code
# Frontend auto-reloads on save
# Backend needs restart for changes (or use Spring DevTools)
# End of day
# Press Ctrl+C in both terminalsFor production deployment, see:
QUICK_START_DEPLOYMENT.md- Deployment guideEXECUTIVE_SUMMARY.md- System overview
- Frontend Guide:
FRONTEND_IMPLEMENTATION_GUIDE.md - Login Guide:
LOGIN_IMPLEMENTATION_GUIDE.md - Quick Reference:
FRONTEND_QUICK_REFERENCE.md - Database Setup:
Database/CONVERSION_SUMMARY.md
- Compilation Fixes:
COMPILATION_FIXES.md - Verification:
FINAL_VERIFICATION_CHECKLIST.md
Before you start working, ensure:
- MySQL database is running
- Backend server started successfully (port 8080)
- Frontend server started successfully (port 3000)
- Login page loads at http://localhost:3000
- No console errors in browser (F12)
- Backend API responds
Both servers should now be running. Happy coding! π
Commands Summary:
# Backend (Spring Boot)
cd Backend/untitled2 && ./gradlew bootRun
# Frontend (React)
cd Timetable-generator && npm startLast Updated: January 24, 2026
Status: β
Production Ready