🚀 CoSync — Collaborative Board Application
A full-stack real-time collaborative project management tool built with FastAPI , WebSockets , and Vanilla JS . Think Trello/Asana with live updates.
🔐 JWT Authentication — Secure register/login with token-based sessions
📋 Project Boards — Create and manage collaborative group projects
✅ Task Cards — Assign tasks with priorities, due dates, and statuses
💬 Comments — Communicate within tasks with real-time comment threads
🔔 Notifications — Live in-app notifications for assignments and updates
⚡ Real-time WebSockets — Instant updates across all connected users
📱 Responsive UI — Works on desktop and mobile
Layer
Technology
Backend
FastAPI (Python)
Database
SQLite (via Python sqlite3)
Auth
JWT (HS256)
Real-time
WebSockets (websockets library)
Frontend
Vanilla HTML/CSS/JS
Deployment
Render / Railway / Docker
# 1. Clone the repository
git clone https://github.com/YOUR_USERNAME/cosync.git
cd cosync
# 2. Create virtual environment
python -m venv venv
# Windows
venv\S cripts\a ctivate
# macOS/Linux
source venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Start the server
uvicorn main:app --reload --host 127.0.0.1 --port 8000
Open your browser at http://127.0.0.1:8000
☁️ Deploy to Render (Free — Permanent URL)
Push this repo to GitHub
Go to render.com → New → Web Service
Connect your GitHub repository
Render auto-detects render.yaml — click Deploy
Your live URL will be: https://cosync-app.onrender.com
Note: Render free tier spins down after 15 mins of inactivity. First request may take ~30s to wake up.
docker build -t cosync .
docker run -p 8000:8000 cosync
Method
Endpoint
Description
POST
/api/auth/register
Register new user
POST
/api/auth/login
Login & get JWT token
Method
Endpoint
Description
GET
/api/projects
List all user projects
POST
/api/projects
Create new project
DELETE
/api/projects/{id}
Delete a project
Method
Endpoint
Description
GET
/api/projects/{id}/tasks
Get project tasks
POST
/api/projects/{id}/tasks
Create task
PUT
/api/tasks/{id}
Update task
DELETE
/api/tasks/{id}
Delete task
Comments & Notifications
Method
Endpoint
Description
GET
/api/tasks/{id}/comments
Get task comments
POST
/api/tasks/{id}/comments
Add comment
GET
/api/notifications
Get user notifications
PUT
/api/notifications/{id}/read
Mark notification read
Protocol
Endpoint
Description
WS
/ws/{token}
Real-time event stream
cosync/
├── main.py # FastAPI routes & WebSocket logic
├── database.py # SQLite schema & query functions
├── auth.py # JWT helpers
├── run.py # Local dev launcher
├── requirements.txt # Python dependencies
├── Dockerfile # Container config
├── render.yaml # Render deployment config
├── Procfile # Railway/Heroku config
└── static/
├── index.html # Single-page application shell
├── css/
│ └── style.css # Full UI styling
└── js/
├── app.js # Main application logic
├── api.js # REST API client
├── ui.js # UI rendering functions
└── ws.js # WebSocket client
Variable
Description
Default
SECRET_KEY
JWT signing secret
change-me-in-production
PORT
Server port
8000
Set SECRET_KEY to a long random string in production!
MIT License — free to use and modify.
Built with ❤️ using FastAPI + WebSockets