Notecast is a NotebookLM alternative AI knowledge base.
- Python 3.8+ (for backend)
- Node.js 16+ (for frontend)
- Git
git clone https://github.com/deBrian07/Notecast.git
cd Notecast# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Linux/Mac:
source venv/bin/activate
# On Windows:
# venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create environment file
cp .env.example .env # or create manually (see Environment Variables section)
# Initialize database
python create_db.py
# Start the backend server
python app.pyThe backend will be available at http://localhost:8000
# Navigate to client directory (from project root)
cd client
# Install dependencies
npm install
# Start the development server
npm run devThe frontend will be available at http://localhost:5173
Create a .env file in the backend directory with the following variables:
# Database
DATABASE_URL=sqlite:///./data/notecast.db
# Security
SECRET_KEY=your-super-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=60
# Directories
UPLOAD_DIR=./data/uploads
TEXT_DIR=./data/text
PODCAST_DIR=./data/podcasts
# AI/LLM Configuration
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama2
# Text-to-Speech Configuration
TTS_VOICE_FEMALE=ljspeech
TTS_VOICE_MALE=male_voice
TTS_SAMPLE_RATE=22050
# Development
DEBUG=trueNotecast/
├── backend/ # FastAPI backend
│ ├── models/ # Database models
│ ├── routers/ # API routes
│ ├── services/ # Business logic
│ ├── core/ # Configuration and security
│ ├── data/ # Database and file storage
│ ├── alembic/ # Database migrations
│ ├── app.py # Main application entry point
│ └── requirements.txt # Python dependencies
├── client/ # React frontend
│ ├── src/ # Source code
│ ├── public/ # Static assets
│ ├── package.json # Node.js dependencies
│ └── vite.config.js # Vite configuration
└── README.md
cd backend
# Run with auto-reload
python app.py
# Run database migrations
alembic upgrade head
# Create new migration
alembic revision --autogenerate -m "Description"cd client
# Development server with hot reload
npm run dev
# Build for production
npm run build
# Preview production build
npm run serveOnce the backend is running, visit:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
- Document Upload: Support for PDF and DOCX files
- AI-Powered Content Generation: Convert documents to podcast scripts
- Text-to-Speech: Generate audio from text with multiple voice options
- User Authentication: Secure user registration and login
- Project Management: Organize documents and podcasts into projects
- Modern UI: Responsive design with Tailwind CSS
- Register/Login: Create an account or sign in
- Create Project: Organize your work into projects
- Upload Documents: Add PDF or DOCX files to your project
- Generate Podcast: Convert documents to podcast scripts using AI
- Text-to-Speech: Generate audio files from your scripts
- Download: Get your finished podcast files
Backend won't start:
- Check if all environment variables are set
- Ensure Python virtual environment is activated
- Verify all dependencies are installed:
pip install -r requirements.txt
Frontend won't start:
- Check Node.js version:
node --version(should be 16+) - Clear node_modules and reinstall:
rm -rf node_modules && npm install - Check if port 5173 is available
Database issues:
- Run
python create_db.pyto initialize the database - Check if
datadirectory exists and is writable
TTS not working:
- Ensure TTS models are properly installed
- Check TTS configuration in environment variables
# Install production dependencies
pip install gunicorn
# Run with Gunicorn
gunicorn app:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000# Build for production
npm run build
# Serve static files (dist folder) with your preferred web server- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Run tests (if available)
- Commit your changes:
git commit -m 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the troubleshooting section above
- Search existing issues in the repository
- Create a new issue with detailed information about your problem
Happy podcasting! 🎙️
