PodCraft is an intelligent, agentic AI-based podcast episode planning system designed to automate and streamline the pre-production phase of podcast creation. It helps podcasters research topics, analyze guest backgrounds, and organize complete episode plans β all from a single platform.
This project was developed as part of the Software Engineering (CSC291) course at COMSATS University, Islamabad.
- Overview
- Modules Implemented
- Tech Stack
- Architecture
- Project Structure
- Getting Started
- Environment Variables
- API Endpoints
- Team
Podcast creators often spend hours on manual research, unstructured planning, and scattered digital tools before recording an episode. PodCraft solves this by using autonomous AI agents that:
- Analyze podcast niche and guest information
- Research relevant, trending topics
- Generate structured episode plans
- Allow bookmarking and refining of research topics
The system is built as a cross-platform web dashboard with a complete MVC architecture.
| Module | Description |
|---|---|
| Module 1 β User Authentication & Profile Management | Registration, login, JWT-based sessions, account lockout, password recovery, profile and notification settings |
| Module 2 β User Intent & Guest Analyzer | Episode niche/topic intake, tone selection, guest profile management with AI-generated guest summaries |
| Module 3 β Topic Research Agent | AI-simulated topic research, relevance scoring, category filtering, bookmarking, and rejection of topics |
Full use cases, functional requirements, and SRS documentation are available in the project report.
Frontend
- React JS (v18+)
- React Router DOM
- Axios
- React Toastify
Backend
- Node.js
- Express JS
- JWT (jsonwebtoken)
- bcryptjs
Database
- MongoDB (Atlas)
- Mongoose ODM
Architecture
- MVC (Model-View-Controller)
Client (React) β REST API (Express) β MongoDB (Mongoose)
- Models β Mongoose schemas for User, Episode, and Research
- Controllers β Business logic for auth, episodes, and research
- Routes β Express route definitions
- Middleware β JWT-based route protection
podcraft/
βββ Backend/
β βββ config/
β β βββ db.js
β βββ controllers/
β β βββ authController.js
β β βββ episodeController.js
β β βββ researchController.js
β βββ middleware/
β β βββ authMiddleware.js
β βββ models/
β β βββ User.js
β β βββ Episode.js
β β βββ Research.js
β βββ routes/
β β βββ authRoutes.js
β β βββ episodeRoutes.js
β β βββ researchRoutes.js
β βββ server.js
β
βββ frontend/
β βββ podcraft-frontend/
β βββ src/
β β βββ components/
β β β βββ common/
β β β βββ Navbar.js
β β βββ context/
β β β βββ AuthContext.js
β β βββ pages/
β β β βββ Login.js
β β β βββ Register.js
β β β βββ Dashboard.js
β β β βββ EpisodePage.js
β β β βββ ResearchPage.js
β β β βββ ProfilePage.js
β β β βββ EpisodeHistoryPage.js
β β βββ utils/
β β β βββ api.js
β β βββ App.js
β
βββ docs/
βββ Podcraft_Scope.pdf
βββ Podcraft_SRS.pdf
βββ Podcraft_SRS_Presentation.pptx
βββ Podcraft_Scope_Presentation.pptx
βββ Podcraft_SDS.pdf
βββ Podcraft_TestCases.pdf
βββ Podcraft-Final-Report-Presentation.pptx
- Node.js (v18+)
- npm
- MongoDB Atlas account (or local MongoDB instance)
git clone https://github.com/asna-154/Podcraft.git
cd Podcraftcd Backend
npm installCreate a .env file in the Backend folder:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRE=24h
FRONTEND_URL=http://localhost:3000Run the backend:
npm run devcd frontend/podcraft-frontend
npm installCreate a .env file in the podcraft-frontend folder (optional, defaults to localhost):
REACT_APP_API_URL=http://localhost:5000/apiRun the frontend:
npm startThe app will be available at http://localhost:3000.
| Variable | Description |
|---|---|
PORT |
Backend server port (default: 5000) |
MONGO_URI |
MongoDB connection string |
JWT_SECRET |
Secret key used to sign JWT tokens |
JWT_EXPIRE |
JWT token expiry duration |
FRONTEND_URL |
Allowed origin for CORS |
REACT_APP_API_URL |
Base URL the frontend uses to call the backend API |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register a new user |
| POST | /api/auth/login |
Login user |
| GET | /api/auth/me |
Get current logged-in user |
| PUT | /api/auth/update |
Update account details |
| PUT | /api/auth/update-password |
Update password |
| POST | /api/auth/logout |
Logout user |
| DELETE | /api/auth/delete |
Delete account |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/episodes |
Create a new episode |
| GET | /api/episodes |
Get all episodes for logged-in user |
| GET | /api/episodes/:id |
Get a single episode |
| PUT | /api/episodes/:id |
Update an episode |
| DELETE | /api/episodes/:id |
Delete an episode |
| POST | /api/episodes/:id/guests |
Add a guest to an episode |
| PUT | /api/episodes/:id/guests/:guestId |
Edit a guest |
| DELETE | /api/episodes/:id/guests/:guestId |
Delete a guest |
| GET | /api/episodes/history |
Get completed episode history |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/research/generate/:episodeId |
Generate research for an episode |
| POST | /api/research/refresh/:episodeId |
Refresh research topics |
| GET | /api/research/:episodeId |
Get research topics for an episode |
| GET | /api/research/:episodeId/bookmarks |
Get bookmarked topics |
| PUT | /api/research/:researchId/bookmark |
Bookmark/unbookmark a topic |
| PUT | /api/research/:researchId/reject |
Reject a topic |
| Name | Registration No. | Contribution |
|---|---|---|
| Asna Hammad | FA23-BDS-051 | Web Dashboard Development |
| Awais Ashraf | FA23-BDS-053 | Mobile App Development |
Supervisor: Dr. Tehseen Riaz Abbasi Course: Software Engineering (CSC291) Institution: COMSATS University, Islamabad
This project was developed for academic purposes as part of a university course assignment.