Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

thiscok

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

Tech Stack

Frontend

  • React
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Socket.IO Client

Backend

  • Node.js
  • Express
  • TypeScript
  • Socket.IO
  • Prisma ORM

Database

  • PostgreSQL

Storage

  • Cloudinary or S3-compatible storage

Deployment

  • Frontend: Vercel
  • Backend: Render / Railway / Fly.io
  • Database: Supabase / Neon PostgreSQL

Core Features

  • 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

Repository Structure

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.md

Milestones

Milestone 1: Project Foundation

Goal: 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

Milestone 2: Authentication

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

Milestone 3: Servers and Channels

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

Milestone 4: Real-Time Messaging

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

Milestone 5: Direct 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

Milestone 6: Roles and Permissions

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

Milestone 7: File Uploads

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

Milestone 8: Moderation and Audit Logs

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

Milestone 9: Voice Channels

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

Milestone 10: Polish and Deployment

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

Local Development

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:api

Environment Variables

Create .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

Contribution Rules

  • 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

License

MIT

About

Thiscok is thiscok

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors