StudyCollab is a collaborative learning platform designed to help students connect, study together, share knowledge, and improve productivity through organized digital collaboration.
The platform aims to create a more interactive and engaging study environment where students can communicate, manage study activities, and work together efficiently.
- 🔐 User Authentication & Authorization
- 👥 Create and Join Study Groups
- 💬 Real-time Collaboration & Communication
- 📂 Share Study Resources and Materials
- 📝 Organize Study Sessions and Tasks
- 📱 Responsive User Interface
- ⚡ Fast and Modern Web Experience
The goal of StudyCollab is to improve collaborative learning by providing students with a centralized platform where they can:
- Communicate effectively
- Share educational resources
- Study together remotely
- Build productive learning communities
- Improve teamwork and knowledge sharing
- Backend: Java 21+ / Spring Boot 3.2.2, Spring Security, Spring Data JPA, Hibernate
- Frontend: React 19, Vite, React Router, Lucide Icons
- Database: PostgreSQL 16+
- Storage & Email: Cloudflare R2 (S3-compatible object storage) & Resend (optional for local dev)
- DevOps: Docker & Docker Compose
Follow the steps below to set up and run StudyCollab on your local machine.
Before you start, make sure you have the following installed:
- Java JDK 21 or later (JDK 21 or 25 recommended)
- Verify:
java -version - Ensure
JAVA_HOMEenvironment variable is configured and points to your JDK directory.
- Verify:
- Node.js (v18+) & npm
- Verify:
node -vandnpm -v
- Verify:
- PostgreSQL 16+ (Installed locally or via Docker)
- Verify local install:
psql -U postgres
- Verify local install:
- Git
- Verify:
git --version
- Verify:
- (Optional) Docker Desktop (if running via Docker Compose)
git clone https://github.com/fenet-as/StudyCollab.git
cd StudyCollabMake sure PostgreSQL is running on port 5432 and create a database named studycollab:
- Using local PostgreSQL (CLI / psql):
CREATE DATABASE studycollab;
- Or using Docker for just the database:
docker run --name studycollab-db -e POSTGRES_DB=studycollab -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:16-alpine
-
Open a terminal and navigate to the
backenddirectory:cd backend -
Configure environment variables:
- A ready-to-use development configuration is provided in
.env.dev. Copy it to.env:- Windows (PowerShell):
Copy-Item .env.dev .env - macOS / Linux:
cp .env.dev .env
- Windows (PowerShell):
- Open
backend/.envand ensureSPRING_DATASOURCE_PASSWORDmatches your PostgreSQL password (defaults to123456orpostgres).
- A ready-to-use development configuration is provided in
-
Ensure
JAVA_HOMEis set:- Windows (PowerShell - current session):
$env:JAVA_HOME = "C:\Program Files\Java\jdk-25.0.2" # Adjust to your JDK path
- macOS / Linux:
export JAVA_HOME=/path/to/your/jdk
- Windows (PowerShell - current session):
-
Build and start the backend:
- Windows:
.\mvnw.cmd clean compile .\mvnw.cmd spring-boot:run
- macOS / Linux:
./mvnw clean compile ./mvnw spring-boot:run
- Windows:
-
Once started, the backend runs at
http://localhost:8080.- Test Health Endpoint:
curl http://localhost:8080/api/health{"service":"studycollab-backend","timestamp":"...","status":"UP","database":"UP"}
- Test Health Endpoint:
-
Open a second terminal and navigate to the
frontenddirectory:cd frontend -
Verify environment configuration:
- The file
.env.developmentis already configured with:VITE_API_BASE_URL=http://localhost:8080/api
- The file
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to:
http://localhost:5173
If you have Docker Desktop installed and prefer running all services in containers:
-
In the repository root, copy the environment template:
- Windows (PowerShell):
Copy-Item .env.example .env - macOS / Linux:
cp .env.example .env
- Windows (PowerShell):
-
Start the services:
docker compose up --build
-
Access the services:
- Frontend:
http://localhost:5173 - Backend:
http://localhost:8080 - Database:
localhost:5432
- Frontend:
JAVA_HOME not found in your environment:- Set
JAVA_HOMEto your JDK installation path (e.g.C:\Program Files\Java\jdk-25.0.2on Windows or/usr/lib/jvm/...on Linux).
- Set
- Compilation or cache error during backend build:
- Run
mvn clean compile(or.\mvnw.cmd clean compile) to ensure all classes are freshly compiled with the configured Java level.
- Run
- Database connection refused (
Connection to localhost:5432 refused):- Verify your PostgreSQL service is running (
Get-Service *postgres*on Windows orsudo systemctl status postgresqlon Linux). - Verify the username, password, and port in
backend/.envmatch your local PostgreSQL credentials.
- Verify your PostgreSQL service is running (
- Port conflicts:
- Port
8080(Backend) or5173(Frontend) already in use: Close the conflicting process or change the port inbackend/.envandfrontend/vite.config.js.
- Port
StudyCollab/
├── backend/ # Spring Boot REST API
│ ├── src/main/java/ # Java controllers, services, security, models
│ ├── .env.dev # Development environment template
│ └── pom.xml # Maven project configuration
├── frontend/ # React 19 + Vite web application
│ ├── src/ # Components, pages, hooks, API clients
│ └── package.json # Frontend dependencies and scripts
├── docker-compose.yml # Docker multi-container setup
└── README.md # Project documentation