A continuing medical education platform for anesthesia professionals across Africa, built for SPOOA-PM Africa.
- π Browse and access medical training modules
- π Admin panel with JWT authentication
- π CRUD management for training formations
- π§ Contact form with email notifications
- πΌοΈ Image upload and management via Supabase Storage
- π± Responsive design for desktop and mobile
- π Security-focused with Helmet and rate limiting
| Layer | Technology |
|---|---|
| Frontend | HTML5, CSS3, JavaScript (Vanilla) |
| Backend | Node.js, Express 5 (ES Modules) |
| Database | Supabase (PostgreSQL) |
| Storage | Supabase Storage |
| Auth | JWT (JSON Web Tokens) |
| Nodemailer (SMTP) | |
| Deployment | Vercel (Frontend), Render (Backend) |
- Node.js >= 18
- A Supabase account (free tier works)
- An SMTP email provider
# Clone the repository
git clone https://github.com/IRAGAME/Safeanesthesia.git
cd Safeanesthesia
# Install backend dependencies
cd backend
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your configurationPORT=5000
ADMIN_PASSWORD=your_secure_password
JWT_SECRET=your_jwt_secret
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
SMTP_HOST=your_smtp_host
SMTP_PORT=587
SMTP_USER=your_smtp_user
SMTP_PASS=your_smtp_password
CORS_ORIGIN=https://safeanesthesia.vercel.app
STORAGE_TYPE=external# Start backend
cd backend
node server.js
# Open frontend (serve with any static server)
cd frontend
npx serve .| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /api/formations |
List all formations | No |
| GET | /api/formations/:id |
Get formation by ID | No |
| POST | /api/auth/login |
Admin login | No |
| GET | /api/auth/verify |
Verify JWT token | Yes |
| POST | /api/admin/formations |
Create formation | Yes |
| PUT | /api/admin/formations/:id |
Update formation | Yes |
| DELETE | /api/admin/formations/:id |
Delete formation | Yes |
| POST | /send |
Submit contact form | No |
βββ backend/
β βββ server.js # Express server entry point
β βββ cors.js # CORS configuration
β βββ storage.js # Supabase storage client
β βββ supabase.js # Supabase database client
β βββ .env.example # Environment variables template
βββ frontend/
β βββ index.html # Home page
β βββ about.html # About page
β βββ contact.html # Contact page
β βββ login.html # Admin login
β βββ admin.html # Admin dashboard
β βββ formation.html # Formation detail page
β βββ formations.html # Formations listing
β βββ css/
β β βββ style.css # Stylesheet
β βββ js/ # JavaScript modules
β βββ config.js
β βββ index.js
β βββ admin.js
β βββ formation.js
β βββ formations.js
β βββ script.js
βββ .gitignore
βββ README.md
- Unit and integration tests
- Internationalization (FR/EN)
- User registration for learners
- Progress tracking and certificates
- Video content support
- Offline access via PWA
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ for SPOOA-PM Africa