thiscok is a full-stack real-time community communication platform inspired by modern chat applications. It supports servers, channels, direct messages, real-time chat, roles, permissions, file sharing, moderation, audit logs, and future voice/video features.
Project status: Planning / Scaffolding
- React
- TypeScript
- Tailwind CSS
- shadcn/ui
- Socket.IO Client
- Node.js
- Express
- TypeScript
- Socket.IO
- Prisma ORM
- PostgreSQL
- Cloudinary or S3-compatible storage
- Frontend: Vercel
- Backend: Render / Railway / Fly.io
- Database: Supabase / Neon PostgreSQL
- User authentication
- Server creation and joining
- Text channels
- Real-time messaging
- Direct messages
- Roles and permissions
- Message edit/delete
- Typing indicators
- Online/offline presence
- File uploads
- Invite links
- Moderation tools
- Audit logs
- Future voice channels using WebRTC
thiscok/
apps/
web/ # React frontend
api/ # Express backend
packages/
shared/ # Shared types and utilities
docs/
ARCHITECTURE.md
API.md
DATABASE.md
ROADMAP.md
ISSUE_BOARD.md
.github/
workflows/
ISSUE_TEMPLATE/
README.md
CONTRIBUTING.md
SECURITY.md
CODE_OF_CONDUCT.mdGoal: Set up a clean professional codebase.
Tasks:
- Set up monorepo structure
- Set up frontend app
- Set up backend app
- Configure TypeScript
- Configure linting and formatting
- Add environment variable examples
- Add GitHub Actions CI
Acceptance Criteria:
- Project installs successfully
- Frontend runs locally
- Backend runs locally
- CI runs on pull requests
Goal: Allow users to register, login, and access protected routes.
Tasks:
- Create user model
- Add register endpoint
- Add login endpoint
- Hash passwords with bcrypt
- Add JWT authentication
- Add refresh token flow
- Add frontend login/register pages
- Add protected dashboard route
Acceptance Criteria:
- User can register
- User can login
- Protected routes reject unauthenticated users
- Logged-in user can fetch their profile
Goal: Users can create servers and channels.
Tasks:
- Create server model
- Create server member model
- Create channel model
- Add create server endpoint
- Add join server by invite endpoint
- Add create channel endpoint
- Add server/channel sidebar UI
- Add server settings modal
Acceptance Criteria:
- User can create a server
- User can join a server
- User can create text channels
- User can switch between channels
Goal: Users can chat live inside channels.
Tasks:
- Set up Socket.IO backend
- Set up Socket.IO frontend client
- Create message model
- Add send message endpoint/event
- Add message history endpoint
- Add live message broadcasting
- Add typing indicators
- Add message edit/delete
Acceptance Criteria:
- Messages appear live without refresh
- Message history loads correctly
- Typing indicator works
- Users can edit/delete their messages
Goal: Users can privately message each other.
Tasks:
- Create direct conversation model
- Create direct message model
- Add start DM endpoint
- Add DM list UI
- Add real-time DM events
- Add unread message indicators
Acceptance Criteria:
- User can start a DM
- User can send private messages
- DM messages update live
- Unread count appears
Goal: Add Discord-like permission control.
Tasks:
- Create role model
- Create permission model
- Create member role model
- Add owner/admin/mod/member roles
- Add permission middleware
- Add role management UI
- Restrict channel/server actions by permission
Acceptance Criteria:
- Owner can manage roles
- Admin can manage channels
- Members cannot access restricted actions
- Permission checks exist on backend and frontend
Goal: Users can upload avatars, server icons, and attachments.
Tasks:
- Add Cloudinary/S3 configuration
- Add avatar upload
- Add server icon upload
- Add message attachment upload
- Validate file type and size
- Show uploaded files in chat
Acceptance Criteria:
- User can upload profile image
- Server can have an icon
- Users can send image/file attachments
- Invalid files are rejected
Goal: Make thiscok safe and manageable.
Tasks:
- Add kick member
- Add ban member
- Add timeout user
- Add delete message as moderator
- Add audit log model
- Add audit log page
- Add report message feature
Acceptance Criteria:
- Moderators can manage users
- Admin actions are logged
- Audit logs show action, target, actor, and timestamp
Goal: Add real-time voice rooms.
Tasks:
- Create voice channel type
- Add WebRTC signalling through Socket.IO
- Add join/leave voice room
- Add mute/unmute
- Add deafen
- Show active voice users
Acceptance Criteria:
- Users can join a voice channel
- Users can hear each other
- Mute/unmute works
- Voice participants are visible
Goal: Make the project demo-ready.
Tasks:
- Add responsive UI
- Add loading states
- Add error handling
- Add landing page
- Add API documentation
- Add deployment configs
- Add seed data
- Add demo video
- Add production README screenshots
Acceptance Criteria:
- App is deployed
- README has screenshots
- Demo flow works end-to-end
- Project looks portfolio-ready
The repository is currently scaffold-only. The following commands are the target local workflow after Milestone 1 is completed:
# install dependencies
npm install
# run frontend
npm run dev:web
# run backend
npm run dev:apiCreate .env files inside the frontend and backend apps.
Example backend variables:
DATABASE_URL=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
CLIENT_URL=http://localhost:5173- Use feature branches
- Create pull requests for all changes
- Keep commits small and meaningful
- Write clear PR descriptions
- Do not commit secrets
- Add tests for important backend logic
MIT