Read these files first to understand the project:
AGENT.TXT- Project operations policy and change logfrontend/src/App.tsx- Main app routing and auth guardsfrontend/src/contexts/AuthContext.tsx- Authentication system
Planner is a collaborative productivity application with:
- Backend: Django REST API (
backend/) - Frontend: React + Vite + TypeScript (
frontend/)
| Path | Purpose |
|---|---|
ixiflowerv2ray/ |
Django settings, URLs, WSGI/ASGI |
authentication/ |
Custom User model, auth endpoints |
tickets/ |
Tasks, submissions, team features, Telegram bot |
structure/ |
Structure Board API (boards, nodes, edges) |
sim/ |
Simulation module |
| Path | Purpose |
|---|---|
src/App.tsx |
Main app, routing, auth guards |
src/pages/ |
Page components (calendar, structure, team, etc.) |
src/pages/structure.tsx |
Structure Board (custom Canvas engine) |
src/components/ui/ |
Shadcn UI primitives |
src/components/planner/ |
Planner-specific components |
src/contexts/AuthContext.tsx |
Auth state management |
src/config/backend.ts |
API base URL configuration |
- Custom Canvas-based board (migrated from React Flow)
- Nodes with position, size, data (label, color, paths)
- Edges connecting nodes
- Modes: Mouse (select/drag), Pen (draw inside nodes), Text
- Group nodes that contain other nodes
- Pan/zoom, marquee selection, keyboard shortcuts
- Token-based auth stored in cookies + localStorage
- Roles: Leader, Mod, Member
- Route guards:
RequireValidated,RequireRole,RequireMember
- Event management, tasks, goals
- Sidebar components for checklists, notes, music
Board: id (UUID), name, owner, members[]
Node: id, type, position {x,y}, width, height, data, style
Edge: id, source, target, animated, style
# Backend
cd backend
pip install -r requirements.txt
python manage.py runserver
# Frontend
cd frontend
npm install
npm run dev| Endpoint | Purpose |
|---|---|
/api/auth/me/ |
Get current user |
/api/structure/boards/ |
List/create boards |
/api/structure/boards/{id}/ |
CRUD board with nodes/edges |
- AGENT.TXT is the source of truth - Always append changes there
- TypeScript strict mode - Use proper types
- Shadcn UI - Use existing UI components from
components/ui/ - Backend API stability - Avoid breaking changes; enrich payloads instead
- Canvas engine - All structure board logic is in
structure.tsxBoardCanvas component
- Create component in
src/pages/ - Add route in
src/App.tsx - Add nav link in
src/components/navbar.tsx
- Create view in appropriate backend app
- Add URL pattern
- Add serializer if needed
- All canvas rendering logic is in
BoardCanvascomponent - Node types: Block, Group
- Check AGENT.TXT for current Phase status