LinkUp - Modern Video Meetings Made Simple
LinkUp is a beautiful, modern video calling platform that makes connecting with your team effortless. Whether you're hosting a quick standup or a team meeting, LinkUp provides a smooth, intuitive experience for up to 10 participants.
β¨ What Makes LinkUp Special
- Crystal Clear Video Calls - Connect with up to 10 people in high-quality video meetings
- Live Chat - Send messages in real-time during your meetings
- Screen Sharing - Share your screen with everyone in the meeting
- Beautiful Design - Clean, modern interface that works beautifully on desktop and mobile
- Keyboard Shortcuts - Power users will love the quick keyboard controls
- No Sign-Up Required - Just create a meeting and share the link - it's that simple!
- Participant Management - See who's in the meeting, pin important speakers, and manage your call easily
π Project Structure
Backend code is organized as follows:
backend/
βββ src/ # Source code
β βββ __init__.py
β βββ main.py # Application entry point
β β
β βββ api/ # API routes and endpoints
β β βββ __init__.py
β β βββ meetings.py # Meeting CRUD endpoints
β β βββ websocket.py # WebSocket handlers
β β
β βββ core/ # Core functionality
β β βββ __init__.py
β β βββ config.py # Configuration and settings
β β βββ schemas.py # Pydantic schemas
β β
β βββ db/ # Database layer
β βββ __init__.py
β βββ database.py # Database connection
β βββ models.py # SQLAlchemy models
β
βββ tests/ # Test suite
β βββ __init__.py
β βββ conftest.py # Pytest fixtures
β βββ test_api.py # API tests
β βββ test_meetings.py # Meeting tests
β
βββ alembic/ # Database migrations
β βββ env.py # Alembic environment (updated)
β βββ versions/ # Migration scripts
β
βββ .env # Environment variables
βββ alembic.ini # Alembic configuration
βββ requirements.txt # Python dependencies
βββ README.md # This file
Frontend code is organized as follows:
frontend/ # React + TypeScript frontend
βββ src/
β βββ pages/ # Page components
β βββ components/ # UI components
β βββ hooks/ # Custom hooks
β βββ api/ # API client
π οΈ Setting Up LinkUp
Ready to run LinkUp on your machine? Let's get you set up!
Backend Setup
The backend handles all the meeting logic and WebRTC signaling.
-
Go to the backend folder:
cd backend -
Create a Python virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install all the required packages:
pip install -r requirements.txt -
Set up your environment variables: Create a
.envfile in thebackendfolder:DATABASE_URL=postgresql://user:password@localhost:5432/videocall SECRET_KEY=your-secret-key-here CORS_ORIGINS=http://localhost:5173 -
Set up the database:
alembic init alembic # Edit alembic.ini with your DATABASE_URL alembic revision --autogenerate -m "Initial migration" alembic upgrade head -
Start the backend server:
python main.pyYou should see the server running on
http://localhost:8000π
Frontend Setup
-
Go to the frontend folder:
cd frontend -
Install all the dependencies:
npm install -
Configure the API connection: Create a
.envfile in thefrontendfolder:VITE_API_URL=http://localhost:8000 VITE_WS_URL=ws://localhost:8000 -
Start the development server:
npm run devThe app will open in your browser at
http://localhost:5173π
π― Getting Started
Creating Your First Meeting
- Head to the home page and click "Create Meeting"
- You'll get a unique meeting code - share it with your team!
- You can also copy the meeting link to send via email or chat
Joining a Meeting
- Enter the 10-character meeting code (or use a shared link)
- Type in your name so others know who you are
- Click "Join Meeting" and you're in!
During the Meeting
- Mute/Unmute - Click the microphone button or press
M - Turn Video On/Off - Click the camera button or press
V - Share Your Screen - Click the screen share button or press
S - Chat - Click the chat icon or press
Cto open the chat panel - See Participants - Click the participants icon or press
Pto see who's in the call - Pin Someone - Click the pin icon on any video to focus on them
- Leave - Click the red phone button or press
Escto leave the meeting
Keyboard Shortcuts
M- Toggle microphoneV- Toggle cameraC- Toggle chatP- Toggle participants listS- Toggle screen sharingEsc- Close panels or leave meeting?- Show all keyboard shortcuts
ποΈ How It Works
LinkUp uses a simple database to keep track of your meetings:
- Meetings - Each meeting gets a unique code and stores basic information
- Participants - Tracks who's in each meeting and their preferences
- Event Logging - Keeps a record of meeting activities for troubleshooting
π§ Technologies
Backend
- FastAPI
- SQLAlchemy (async)
- Alembic
- WebSocket
- PostgreSQL
Frontend
- React 19
- TypeScript
- Vite
- Tailwind CSS
- WebRTC
- Axios