Skip to content

Repository files navigation

EduCast

EduCast is an educational podcast platform designed to make learning more accessible through audio content. Users can upload, discover, save, and interact with educational podcasts across different subjects and education levels.

The project consists of a Spring Boot backend, a PostgreSQL database, and a Vite-based frontend.


Features

Authentication

  • User registration
  • Email verification using confirmation codes
  • JWT-based authentication
  • Secure password storage using BCrypt

Podcasts

  • Browse all podcasts
  • View popular podcasts
  • Upload educational podcasts
  • Subject categorization
  • Education level categorization
  • Podcast ratings

Community

  • Like and dislike podcasts
  • Save podcasts to personal library
  • Comment on podcasts

User Experience

  • Responsive frontend interface
  • Audio playback support
  • Personal profile and saved content
  • Search and filtering capabilities

Technology Stack

Backend

  • Java 21
  • Spring Boot
  • Spring Security
  • Spring Data JPA
  • Hibernate
  • PostgreSQL
  • Maven

Frontend

  • Vite
  • JavaScript
  • HTML5
  • CSS3

Infrastructure

  • Docker
  • Docker Compose

Project Structure

EduCast/
│
├── backend/
│   ├── src/
│   ├── pom.xml
│   └── Dockerfile
│
├── frontend/
│   ├── src/
│   ├── package.json
│   └── vite.config.js
│
├── tests/
│
├── docker-compose.yml
│
└── README.md

Getting Started

Prerequisites

Make sure the following software is installed:

  • Docker
  • Docker Compose
  • Node.js 18+
  • Java 21

Running the Backend

From the project root:

docker compose up -d --build

Backend API:

http://localhost:8081

Health check:

curl http://localhost:8081/actuator/health

Running the Frontend

Navigate to the frontend directory:

cd frontend

Install dependencies:

npm install

Start development server:

VITE_BACKEND_PROXY_TARGET=http://localhost:8081 npm run dev

Frontend application:

http://localhost:3000

If port 3000 is already occupied:

npm run dev -- --port 3001

Authentication Flow

Registration

POST /api/auth/register/init

Request:

{
  "login": "testuser",
  "email": "test@test.com",
  "password": "Password123!"
}

Email Confirmation

POST /api/auth/register/confirm

Request:

{
  "email": "test@test.com",
  "code": "123456"
}

Login

POST /api/auth/login

Request:

{
  "email": "test@test.com",
  "password": "Password123!"
}

Database

The application uses PostgreSQL.

Main entities:

  • Users
  • Podcasts
  • Comments
  • Podcast Votes
  • Saved Podcasts

The schema is automatically generated by Hibernate during development.


Development

Rebuild Containers

docker compose down -v
docker compose up -d --build

View Logs

Backend logs:

docker compose logs -f api

Database logs:

docker compose logs -f db

Testing

Run backend tests:

cd backend
./mvnw test

Run frontend development environment:

cd frontend
npm run dev

Future Improvements

  • Podcast recommendations
  • User subscriptions
  • Advanced search
  • Playlist support
  • Podcast analytics
  • Mobile application
  • Cloud file storage integration

Authors

Developed as part of the EduCast educational platform project.


License

This project is licensed under the MIT License.

About

Web-application for education podcasts

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages