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.
- User registration
- Email verification using confirmation codes
- JWT-based authentication
- Secure password storage using BCrypt
- Browse all podcasts
- View popular podcasts
- Upload educational podcasts
- Subject categorization
- Education level categorization
- Podcast ratings
- Like and dislike podcasts
- Save podcasts to personal library
- Comment on podcasts
- Responsive frontend interface
- Audio playback support
- Personal profile and saved content
- Search and filtering capabilities
- Java 21
- Spring Boot
- Spring Security
- Spring Data JPA
- Hibernate
- PostgreSQL
- Maven
- Vite
- JavaScript
- HTML5
- CSS3
- Docker
- Docker Compose
EduCast/
│
├── backend/
│ ├── src/
│ ├── pom.xml
│ └── Dockerfile
│
├── frontend/
│ ├── src/
│ ├── package.json
│ └── vite.config.js
│
├── tests/
│
├── docker-compose.yml
│
└── README.md
Make sure the following software is installed:
- Docker
- Docker Compose
- Node.js 18+
- Java 21
From the project root:
docker compose up -d --buildBackend API:
http://localhost:8081
Health check:
curl http://localhost:8081/actuator/healthNavigate to the frontend directory:
cd frontendInstall dependencies:
npm installStart development server:
VITE_BACKEND_PROXY_TARGET=http://localhost:8081 npm run devFrontend application:
http://localhost:3000
If port 3000 is already occupied:
npm run dev -- --port 3001POST /api/auth/register/initRequest:
{
"login": "testuser",
"email": "test@test.com",
"password": "Password123!"
}POST /api/auth/register/confirmRequest:
{
"email": "test@test.com",
"code": "123456"
}POST /api/auth/loginRequest:
{
"email": "test@test.com",
"password": "Password123!"
}The application uses PostgreSQL.
Main entities:
- Users
- Podcasts
- Comments
- Podcast Votes
- Saved Podcasts
The schema is automatically generated by Hibernate during development.
docker compose down -v
docker compose up -d --buildBackend logs:
docker compose logs -f apiDatabase logs:
docker compose logs -f dbRun backend tests:
cd backend
./mvnw testRun frontend development environment:
cd frontend
npm run dev- Podcast recommendations
- User subscriptions
- Advanced search
- Playlist support
- Podcast analytics
- Mobile application
- Cloud file storage integration
Developed as part of the EduCast educational platform project.
This project is licensed under the MIT License.