-
Notifications
You must be signed in to change notification settings - Fork 1
Getting Started
This guide will walk you through setting up LinkUp on your local machine for development.
Before you begin, make sure you have these installed:
- Python 3.9+ - For the backend
- Node.js 18+ - For the frontend
- PostgreSQL 13+ - For the database
- Git - For version control
video_call/
├── backend/ # FastAPI backend server
│ ├── main.py # Main application entry point
│ ├── models.py # Database models
│ ├── schemas.py # Pydantic schemas for validation
│ ├── database.py # Database configuration
│ ├── config.py # Environment configuration
│ └── alembic/ # Database migrations
│
└── frontend/ # React frontend application
├── src/
│ ├── pages/ # Page components (Home, JoinMeeting, MeetingRoom)
│ ├── components/ # Reusable UI components
│ ├── hooks/ # Custom React hooks (WebRTC, WebSocket)
│ ├── api/ # API client functions
│ └── utils/ # Utility functions
└── public/ # Static assets
git clone https://github.com/martian56/videoo-call.git
cd videoo-call/backendpython -m venv venv
# On Windows
venv\Scripts\activate
# On macOS/Linux
source venv/bin/activatepip install -r requirements.txtCreate a .env file in the backend folder:
# Database
DATABASE_URL=postgresql://username:password@localhost:5432/linkup
# Security
SECRET_KEY=your-secret-key-here-change-in-production
# CORS (adjust based on your frontend URL)
CORS_ORIGINS=http://localhost:5173,http://localhost:3000
# Application
APP_NAME=LinkUp
DEBUG=TrueGenerate a secure SECRET_KEY:
python -c "import secrets; print(secrets.token_urlsafe(32))"# Create the database
createdb linkup
# Or using psql
psql -U postgres
CREATE DATABASE linkup;
\q# Initialize Alembic (if not already done)
alembic init alembic
# Create initial migration
alembic revision --autogenerate -m "Initial migration"
# Apply migrations
alembic upgrade headpython main.pyThe backend will be running at http://localhost:8000
You can verify it's working by visiting:
- API docs:
http://localhost:8000/docs - Health check:
http://localhost:8000/health
cd ../frontendnpm installCreate a .env file in the frontend folder:
VITE_API_URL=http://localhost:8000
VITE_WS_URL=ws://localhost:8000npm run devThe frontend will be running at http://localhost:5173
-
Open your browser and go to
http://localhost:5173 - Click "Create Meeting" to generate a meeting code
- Open another browser tab (or incognito window) and join the meeting
-
Test features:
- Turn on/off camera and microphone
- Send chat messages
- Share your screen
- Pin a participant
Problem: ModuleNotFoundError or import errors
# Solution: Make sure virtual environment is activated
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txtProblem: Database connection errors
# Solution: Check PostgreSQL is running and credentials are correct
# Verify DATABASE_URL in .env matches your PostgreSQL setupProblem: EADDRINUSE - Port already in use
# Solution: Kill the process using port 5173 or change the port
# Windows: netstat -ano | findstr :5173
# macOS/Linux: lsof -ti:5173 | xargs killProblem: Cannot connect to backend
# Solution: Verify VITE_API_URL and VITE_WS_URL in frontend/.env
# Make sure backend is running on the correct portProblem: Alembic migration fails
# Solution: Reset migrations
alembic downgrade base
alembic upgrade headNow that you have LinkUp running locally:
- 📖 Read the User Guide to learn all features
- 🔧 Check out Technical Documentation to understand the architecture
- 🚀 See Deployment Guide when ready to deploy
- 🤝 Visit Contributing Guide to contribute to the project
Both frontend and backend support hot reloading:
- Frontend: Vite automatically reloads on file changes
-
Backend: FastAPI uses
--reloadflag (enabled inmain.pyduring development)
Backend debugging:
# Add breakpoints in your code
import pdb; pdb.set_trace()Frontend debugging:
- Use browser DevTools (F12)
- Check Console for errors
- Use React DevTools extension
# Backend tests
cd backend
pytest
# Frontend tests
cd frontend
npm run testNeed help? Check the Troubleshooting page or open an issue.