๐ฌ Chatify ยท

Chatify is a realtime messaging app for authenticated users. It supports one-to-one chats with text, media, stickers, reactions, and read/delivery status โ similar to modern messaging products, built as a full-stack TypeScript project.
The app splits into a React client and a Node.js API with Socket.io for realtime delivery:
Browser (React + Auth0) โโRESTโโโบ Express API โโโบ Turso (libSQL)
โ โ
โโโโโ Socket.io (JWT auth) โโโโโ
Media uploads flow through the API to AWS S3, with optional CloudFront signed URLs.
- Auth boundary: Auth0 JWT on REST routes (
express-oauth2-jwt-bearer) and on socket connections (authSocketMiddleware). - Realtime path: Clients emit
new_messageover Socket.io; the server persists to Turso and broadcastschat_messageto connected clients.
| Layer | Technologies |
|---|---|
| Frontend | TypeScript, React, Vite, Tailwind CSS, Zustand, Auth0, Dexie |
| Backend | TypeScript, Node.js, Express, Socket.io, Turso (libSQL) |
| Infra | AWS (EC2, S3, CloudFront), Cloudflare Pages, GitHub Actions |
- Frontend:
TypeScriptยทReactยทViteยทTailwindCSSยทZustandยทAuth0 - Backend:
TypeScriptยทNode.jsยทExpressยทTursoยทSocket.ioยทRESTยทJWT Auth - Infra:
AWS: EC2 - S3 - CloudFrontยทCloudflare PagesยทPNPM WorkspacesยทPM2ยทGitHub Actions - Linting and Formatting:
StandardJSยทESLintยทPrettier
Prerequisites: Node.js 18+, pnpm 9+
-
Clone the repository.
-
Copy env templates and fill in your own values (no secrets are committed):
client/.env.exampleโclient/.env.localserver/.env.exampleโserver/.env.local
-
Install dependencies from the repo root:
pnpm install
-
Start the API and client (separate terminals):
pnpm --filter chatify run build && pnpm --filter chatify run start pnpm --filter client run start -
Open http://localhost:5173.
From the repo root:
pnpm run lint # ESLint on client + server source
pnpm run typecheck # TypeScript --noEmit
pnpm run test # Auth boundary, message handler, client utils
pnpm run build # Compile server + production client bundle-
๐ Sign in/Sign up with Google, GitHub, or email/password
-
๐ฌ Initiate personalized chats with other users.
-
๐ฉ Messaging Options:
- ๐๏ธ Share any file type.
- ๐ท Exchange images.
- โ๏ธ Send and receive text messages.
- ๐ฅ Share videos.
- ๐ Express with fun stickers.
- ๐๏ธ Share animated GIFs.
- ๐ Add emojis to convey emotions.
-
๐ Automatically identify links and provide clickable anchor tags.
-
๐ Respond to messages to maintain clear and contextual conversations.
-
๐ฎ Stay updated with notifications for unseen messages.
-
๐ง Track message read status for improved communication clarity.
-
๐ React to messages with emojis to express feelings and responses.
-
๐ Access a wide array of emojis through an intuitive emoji picker.
-
๐ Send stickers using an intuitive sticker picker powered by Tenor.
-
๐ท Preview sent images and files directly within the chat interface.
-
๐ฌ Message Management:
- ๐๏ธ Delete messages with a note indicating removal.
- ๐ Filter chats and messages efficiently using the search bar.
- ๐งฎ Sort messages by file type, media, and more.
-
๐ฅ Chat Actions:
- ๐ Pin/Unpin
- ๐ Hide/Unhide
- ๐ Mute/Unmute
- ๐ต Mark Read/Unread
- ๐ Block/Unblock
- ๐งผ Clear
- โ Delete
Thank you for exploring this project! If you find the structure or features useful, feel free to use this code for your project. Contributions are welcome! If you have ideas, corrections, or improvements, please open an issue or send a pull request. Your collaboration is valued and appreciated! ๐
Chatify is MIT licensed. โค๏ธ
