- Frontend: HTML, CSS, JavaScript, Tailwind CSS v4, Vite
- Backend: Express.js (Node.js), MongoDB, Socket.io (coming soon)
chat_app_web/
├── Frontend/
│ ├── index.html # SPA entry point
│ ├── package.json
│ ├── src/
│ │ ├── input.css # Tailwind theme config
│ │ ├── output.css # Generated (gitignored)
│ │ ├── styles/
│ │ │ ├── style.css # Base styles & design tokens
│ │ │ └── components.css # Component-level styles
│ │ ├── scripts/
│ │ │ ├── main.js # App entry & route definitions
│ │ │ ├── router.js # Hash-based SPA router
│ │ │ ├── login.js # Login page & validation
│ │ │ └── signup.js # Signup page & validation
│ │ ├── components/
│ │ │ ├── navbar.js # Shared navbar (Abdul Rasheed)
│ │ │ ├── footer.js # Shared footer (Abdul Rasheed)
│ │ │ ├── chatWindow.js # Chat window (Ali Raza)
│ │ │ ├── sidebar.js # Sidebar (Ali Raza)
│ │ │ └── inputMessage.js # Message input (Ali Raza)
│ │ ├── pages/
│ │ │ ├── home.js # Landing page (Abdul Rasheed)
│ │ │ └── chat.html # Chat page ref (Ali Raza)
│ │ └── assets/
│ │ ├── favicon/
│ │ ├── images/
│ │ └── svg/
│ └── .gitignore
├── Backend/
│ └── README.md
└── README.md
cd Frontend
npm installRun Tailwind CSS watcher (generates output.css):
npm run tailwindRun dev server (in a separate terminal):
npm run devFrontend → Landing page (Home), Login page, Signup page, SPA Router, Navbar, Footer
Frontend → Chat page interface (sidebar, chat window, message input)
All pages load inside index.html via JavaScript. The URL hash (#/, #/login, #/signup) determines which page to show. No full-page reloads — just like React Router.
Ali Raza: To add your chat page, create a renderChatPage() and initChatPage() function, then uncomment the chat route in main.js.