A modern chat interface powered by Node.js backend with real-time streaming support via Server-Sent Events (SSE).
Note: This project has been converted from a Tauri-based desktop application to a web-based application with Node.js backend, removing file tree, PDF/Excel viewers, and authentication features while keeping session and chat functionality.
- Frontend: React + TypeScript + Vite
- Backend: Node.js + Express + TypeScript
- Communication: REST API + Server-Sent Events (SSE)
- Features: Session management, real-time chat streaming, notes
- Node.js 18+
- npm or yarn
-
Clone and install dependencies
git clone <repository-url> cd codex-ui npm install cd backend && npm install && cd ..
-
Start the backend server
cd backend && npm run dev
Backend runs on
http://localhost:3001 -
Start the frontend (new terminal)
npm run dev
Frontend runs on
http://localhost:1420
- Real-time Chat: Send messages and receive streaming responses
- Session Management: Create and manage multiple chat sessions
- SSE Streaming: Server-Sent Events for real-time communication
- Notes System: Basic note-taking functionality
- Dark/Light Theme: Theme switching support
- Responsive UI: Works on different screen sizes
- File tree navigation
- PDF viewer
- Excel viewer
- Authentication/login system
- Tauri desktop functionality
GET /api/sessions- Get all sessionsPOST /api/sessions- Create new sessionGET /api/sessions/:id- Get specific sessionPOST /api/chat/message- Send message (non-streaming)GET /api/chat/stream/:sessionId- SSE endpoint for streaming chatGET /api/health- Backend health check
codex-ui/
├── backend/ # Node.js backend
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ └── index.ts # Server entry point
│ └── package.json
├── src/ # React frontend
│ ├── components/ # React components
│ ├── services/ # API client services
│ └── stores/ # State management
└── package.json
- Session data is stored in memory (resets on server restart)
- Backend provides mock AI responses for demonstration
- CORS configured for frontend-backend communication
- Uses Zustand for state management on frontend
npm run build # Build frontend
cd backend && npm run build # Build backend
cd backend && npm start # Start production serverThis project is licensed under the MIT License - see the LICENSE file for details.

