NOTE: Please test with local deployment as there is some issue with deployed ones currently.
A real-time status page application built with React, Node.js, and Socket.IO for monitoring services and incidents.
- Public Status Page: Real-time display of service status and active incidents
- Admin Dashboard: Manage services and incidents with CRUD operations
- Real-time Updates: Live updates using Socket.IO
- Modern UI: Built with Tailwind CSS and shadcn/ui components
- TypeScript: Full type safety for both frontend and backend
- Node.js with Express
- Prisma ORM with SQLite database
- Socket.IO for real-time communication
- TypeScript for type safety
- React with TypeScript
- Vite for fast development
- Tailwind CSS for styling
- shadcn/ui for UI components
- Socket.IO Client for real-time updates
- Axios for API communication
status-page/
├── status-backend/ # Backend API server
│ ├── prisma/ # Database schema and migrations
│ ├── routes/ # API route handlers
│ ├── server.js # Main server file
│ └── package.json
├── status-frontend/ # Frontend React application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── services/ # API and Socket services
│ │ ├── types/ # TypeScript type definitions
│ │ └── App.tsx # Main application component
│ └── package.json
└── README.md
- Node.js (v18 or higher)
- npm or yarn
The application comes with pre-configured demo accounts:
- Admin User:
admin@techcorp.com(Full admin access) - Member User:
member@techcorp.com(Limited access) - Password:
admin123or leave empty
Note: Only existing users can login. New user registration is not available in this demo version.
-
Navigate to the backend directory:
cd status-backend -
Install dependencies:
npm install
-
Set up the database:
npx prisma migrate dev
-
Seed the database with sample data:
npm run seed
-
Start the development server:
npm run dev
The backend will be running on http://localhost:3001
-
Navigate to the frontend directory:
cd status-frontend -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The frontend will be running on http://localhost:5173
GET /api/services- Get all servicesGET /api/services/organization/:orgId- Get services by organizationPOST /api/services- Create new servicePATCH /api/services/:id/status- Update service statusPUT /api/services/:id- Update serviceDELETE /api/services/:id- Delete service
GET /api/incidents- Get all incidentsGET /api/incidents/organization/:orgId- Get incidents by organizationPOST /api/incidents- Create new incidentPATCH /api/incidents/:id/status- Update incident statusPUT /api/incidents/:id- Update incidentDELETE /api/incidents/:id- Delete incident
GET /api/organizations- Get all organizationsGET /api/organizations/:id- Get organization by IDPOST /api/organizations- Create new organizationPUT /api/organizations/:id- Update organizationDELETE /api/organizations/:id- Delete organization
The application uses Socket.IO for real-time updates:
service_status_updated- Emitted when service status changesincident_updated- Emitted when incident is updatedincident_created- Emitted when new incident is created
The application uses the following main entities:
- User: System users
- Organization: Companies or organizations
- Service: Services being monitored
- Incident: Issues or maintenance events
- OrganizationMember: User-organization relationships
DATABASE_URL="file:./dev.db"
FRONTEND_URL="http://localhost:5173"
VITE_API_URL="http://localhost:3001/api"
VITE_SOCKET_URL="http://localhost:3001"
npm run dev- Start development server with nodemonnpm start- Start production servernpm run seed- Seed database with sample datanpx prisma studio- Open Prisma Studio for database management
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build
- Set up a production database (PostgreSQL recommended)
- Update DATABASE_URL in environment variables
- Run
npx prisma migrate deploy - Deploy to your preferred platform (Railway, Render, etc.)
- Update environment variables for production
- Run
npm run build - Deploy the
distfolder to your preferred platform (Vercel, Netlify, etc.)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.