{"id":50338284,"url":"https://github.com/techycsr/trello","last_synced_at":"2026-05-29T15:01:03.455Z","repository":{"id":359965025,"uuid":"1246907676","full_name":"TechyCSR/Trello","owner":"TechyCSR","description":"A modern Trello-style productivity workspace with boards, inbox capture, Kanban lists, draggable cards, card details, labels, checklists, due dates, members, comments, activity history, and responsive mobile/desktop layouts.","archived":false,"fork":false,"pushed_at":"2026-05-24T10:21:33.000Z","size":245,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T12:08:01.421Z","etag":null,"topics":["project-management","trello"],"latest_commit_sha":null,"homepage":"https://trello.techycsr.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TechyCSR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T17:30:18.000Z","updated_at":"2026-05-24T10:21:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TechyCSR/Trello","commit_stats":null,"previous_names":["techycsr/trello"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/TechyCSR/Trello","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechyCSR%2FTrello","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechyCSR%2FTrello/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechyCSR%2FTrello/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechyCSR%2FTrello/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TechyCSR","download_url":"https://codeload.github.com/TechyCSR/Trello/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechyCSR%2FTrello/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33657690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["project-management","trello"],"created_at":"2026-05-29T15:01:02.327Z","updated_at":"2026-05-29T15:01:03.450Z","avatar_url":"https://github.com/TechyCSR.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Trello-Inspired Kanban Workspace\n\nA modern Trello-style productivity workspace with boards, inbox capture, Kanban lists, draggable cards, card details, labels, checklists, due dates, members, comments, activity history, and responsive mobile/desktop layouts.\n\nLive deployment:\n\n- Frontend: https://trello.techycsr.dev/\n- Backend health check: https://trello-d5l0.onrender.com/health\n\n## Features\n\n- Multi-board workspace with board dashboard.\n- Inbox section for quick task/card capture.\n- Board section with horizontal Kanban lists.\n- Drag and drop cards between lists and back to inbox.\n- Create, rename, reorder, collapse, and delete lists.\n- Create, edit, archive, and delete cards.\n- Card detail modal with title, description, labels, due date, checklist items, comments, and activity.\n- Global user assignment with avatar images.\n- Multiple simulated users with account switching from the navbar.\n- Board switching modal.\n- Responsive mobile layout with one active workspace section at a time.\n- Vercel frontend deployment and Render backend deployment.\n\n## Tech Stack\n\nFrontend:\n\n- React 18\n- Vite\n- TypeScript\n- Tailwind CSS\n- Zustand\n- Axios\n- React Router\n- dnd-kit\n- Radix UI primitives\n- Lucide icons\n\nBackend:\n\n- FastAPI\n- SQLAlchemy\n- Pydantic\n- PostgreSQL\n- Uvicorn\n\nDeployment:\n\n- Vercel for frontend\n- Render for backend\n- PostgreSQL database, for example Neon or Render Postgres\n\n## Project Structure\n\n```text\nfrontend/   React + Vite frontend\nbackend/    FastAPI backend\n```\n\nImportant files:\n\n```text\nfrontend/vercel.json       Vercel config when frontend is selected as root\nbackend/runtime.txt        Python runtime pin\nbackend/.python-version    Python version for Render\nrender.yaml                Optional Render Blueprint config\n```\n\n## Local Setup\n\n### 1. Backend\n\nCreate and activate a Python environment:\n\n```powershell\npy -3.11 -m venv backend\\.venv\nbackend\\.venv\\Scripts\\python.exe -m pip install -r backend\\requirements.txt\n```\n\nCreate the backend environment file:\n\n```powershell\nCopy-Item backend\\.env.example backend\\.env\n```\n\nExample `backend/.env`:\n\n```env\nDATABASE_URL=postgresql://postgres:postgres@localhost:5432/trello_kanban\nCORS_ORIGINS=http://localhost:5173\nCORS_ORIGIN_REGEX=\nAUTO_SEED=true\n```\n\nRun the backend:\n\n```powershell\ncd backend\n.\\.venv\\Scripts\\python.exe -m uvicorn app.main:app --reload\n```\n\nBackend health check:\n\n```text\nhttp://localhost:8000/health\n```\n\n### 2. Frontend\n\nInstall dependencies:\n\n```powershell\ncd frontend\nnpm install\n```\n\nCreate `frontend/.env`:\n\n```env\nVITE_API_URL=http://localhost:8000\n```\n\nRun the frontend:\n\n```powershell\nnpm run dev\n```\n\nFrontend URL:\n\n```text\nhttp://localhost:5173\n```\n\n## Build Checks\n\nFrontend:\n\n```powershell\ncd frontend\nnpm run build\n```\n\nBackend import check:\n\n```powershell\ncd backend\n$env:PYTHONDONTWRITEBYTECODE='1'\npython -B -c \"import app.main\"\n```\n\n## Environment Variables\n\n### Frontend\n\n```env\nVITE_API_URL=https://trello-d5l0.onrender.com\n```\n\n### Backend\n\n```env\nPYTHON_VERSION=3.11.9\nDATABASE_URL=postgresql://USER:PASSWORD@HOST:5432/DBNAME\nCORS_ORIGINS=https://trello.techycsr.dev\nCORS_ORIGIN_REGEX=^https://.*\\.vercel\\.app$\nAUTO_SEED=true\n```\n\nUse `CORS_ORIGINS` for exact frontend domains. Use `CORS_ORIGIN_REGEX` if you want Vercel preview deployments to call the backend.\n\n## Deployment\n\n### Frontend on Vercel\n\nUse these Vercel settings:\n\n- Root Directory: `frontend`\n- Install Command: `npm ci`\n- Build Command: `npm run build`\n- Output Directory: `dist`\n\nSet this Vercel environment variable:\n\n```env\nVITE_API_URL=https://trello-d5l0.onrender.com\n```\n\nThe project includes `frontend/vercel.json` for SPA routing fallback.\n\n### Backend on Render\n\nUse these Render settings:\n\n- Root Directory: `backend`\n- Build Command: `pip install -r requirements.txt`\n- Start Command: `uvicorn app.main:app --host 0.0.0.0 --port $PORT`\n- Health Check Path: `/health`\n\nSet these Render environment variables:\n\n```env\nPYTHON_VERSION=3.11.9\nDATABASE_URL=postgresql://USER:PASSWORD@HOST:5432/DBNAME\nCORS_ORIGINS=https://trello.techycsr.dev\nCORS_ORIGIN_REGEX=^https://.*\\.vercel\\.app$\nAUTO_SEED=true\n```\n\nPython is pinned to `3.11.9` because newer Render defaults can force native dependencies such as `pydantic-core` to compile from source.\n\n## API Overview\n\nUsers:\n\n- `GET /users`\n\nBoards:\n\n- `GET /boards`\n- `POST /boards`\n- `GET /boards/{board_id_or_code}`\n- `PATCH /boards/{board_id}`\n- `DELETE /boards/{board_id}`\n\nLists:\n\n- `POST /lists`\n- `PATCH /lists/{list_id}`\n- `DELETE /lists/{list_id}`\n- `PATCH /lists/reorder`\n\nCards:\n\n- `POST /cards`\n- `PATCH /cards/{card_id}`\n- `DELETE /cards/{card_id}`\n- `PATCH /cards/move`\n- `POST /cards/{card_id}/comments`\n- `GET /cards/search`\n\nLabels:\n\n- `POST /labels`\n\n## Data Model Summary\n\nThe backend stores:\n\n- Users\n- Boards\n- Board members\n- Lists\n- Cards\n- Labels\n- Card labels\n- Card members\n- Checklists\n- Checklist items\n- Card activity records\n\nList and card ordering use numeric `position` values so items can move smoothly without renumbering every row.\n\n## Multi-User Support\n\nThis app supports simulated multi-user collaboration.\n\nAssumptions:\n\n- There is no password-based authentication in this assignment build.\n- The active user is selected in the UI and stored in `localStorage`.\n- Requests send the selected user through the `X-USER-ID` header.\n- The backend validates board access using board ownership, board membership, or share-token access.\n- Global users can be assigned to cards.\n- Activity records store which user performed a card action when available.\n\nSeeded users include:\n\n```text\nTechyCSR, Alex, Sarah, John, Emma, Liam, Sophia, Noah, Olivia, Ethan\n```\n\n## Runtime Schema\n\nThe backend uses SQLAlchemy `create_all` plus additive runtime schema patching for assignment-friendly deployment. This keeps older local or hosted databases compatible without requiring Alembic migrations.\n\nFor a production-grade long-term project, Alembic migrations would be the next step.\n\n## Assumptions and Notes\n\n- Production database should be PostgreSQL.\n- SQLite fallback exists for quick local smoke checks.\n- Render free instances can cold start, so the frontend API timeout is set higher than a local-only app.\n- Uploaded file attachments are not implemented; card covers use colors or external image URLs.\n- Real-time WebSocket collaboration is not implemented yet.\n- The current deployment is designed for Vercel frontend and Render backend.\n\n## Future Improvements\n\n- Add real authentication and invite-based permissions.\n- Add WebSocket live updates.\n- Add archived-card browsing and restore actions.\n- Add file attachments.\n- Add Alembic migrations.\n- Add Playwright end-to-end tests for drag/drop and card editing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechycsr%2Ftrello","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechycsr%2Ftrello","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechycsr%2Ftrello/lists"}