A modern, responsive psychology appointment management system built with pure PHP and SQLite3. This application enables psychologists to manage their appointment schedules while allowing patients to book appointments seamlessly.
- Time Slot Management: Create, view, and manage available appointment slots
- Appointment Oversight: Review, approve, or cancel appointment requests
- User Management: Monitor registered users and their appointment history
- Dashboard Analytics: Quick overview of pending requests and system statistics
- Easy Registration: Simple account creation process
- Appointment Booking: Browse available time slots and book appointments instantly
- Appointment Tracking: View appointment status (pending, approved, cancelled)
- Profile Management: Update personal information and account settings
- Responsive Design: Modern Bootstrap 5 interface that works on all devices
- Role-Based Access: Secure admin and user role separation
- Session Management: Secure authentication and session handling
- SQLite Database: Lightweight, file-based database with automatic setup
- Docker Ready: Containerized development and deployment
- Docker and Docker Compose v2
- Git
-
Clone the repository
git clone <repository-url> cd OpenPsychologist
-
Start the application
./start.sh
Or manually:
docker compose up --build
-
Access the application
- Open your browser and navigate to:
http://localhost:8080 - The application will be ready to use immediately
- Open your browser and navigate to:
- Email:
admin@psychologist.com - Password:
admin123
β οΈ Important: Change the default admin password after first login in a production environment.
- Backend: Pure PHP 8.2+ (no frameworks)
- Database: SQLite3 with automatic schema creation
- Frontend: Bootstrap 5.3.0 with custom CSS
- Containerization: Docker with PHP built-in server
- Development: Hot-reload capable with volume mounting
OpenPsychologist/
βββ public/ # Web root directory
β βββ index.php # Application entry point
β βββ css/ # Custom stylesheets
β βββ js/ # JavaScript files
βββ src/ # Application source code
β βββ config/ # Configuration classes
β β βββ Database.php # Database connection & schema
β β βββ Router.php # URL routing system
β β βββ Session.php # Session management
β βββ controllers/ # Request handlers
β β βββ AuthController.php
β β βββ AdminController.php
β β βββ UserController.php
β β βββ BookingController.php
β βββ models/ # Data models
β β βββ User.php
β βββ views/ # HTML templates
β βββ layout.php # Main layout template
β βββ admin/ # Admin-specific views
β βββ auth/ # Authentication views
β βββ user/ # User-specific views
βββ data/ # SQLite database files
βββ docker-compose.yml # Docker configuration
βββ Dockerfile # Container definition
βββ start.sh # Quick start script
- Login with admin credentials
- Manage Time Slots:
- Navigate to Admin β Time Slots
- Create new available appointment slots
- Set date, time, and optional descriptions
- Review Appointments:
- Go to Admin β Appointments
- Approve or cancel pending requests
- View appointment history
- Monitor Users:
- Access Admin β Users
- View registered users and their activity
- Register a new account or Login
- Book Appointment:
- Click "Book Appointment" from dashboard
- Select from available time slots
- Submit booking request
- Track Status:
- View "My Appointments" for status updates
- Check if appointments are pending, approved, or cancelled
- Manage Profile:
- Update personal information
- Change contact details
You can customize the application using environment variables in docker-compose.yml:
environment:
- PHP_ENV=development # development|production
- APP_PORT=8080 # Application portTo run on a different port:
PORT=3000 docker compose upThe SQLite database is stored in the data/ directory and is automatically created on first run.
# Start the application
docker compose up
# Start in background
docker compose up -d
# Rebuild containers
docker compose up --build
# Stop the application
docker compose down
# View logs
docker compose logs -f- Password Hashing: Secure bcrypt password hashing
- Session Security: Secure session management with regeneration
- SQL Injection Protection: Prepared statements throughout
- Role-Based Access: Admin and user role separation
- Input Validation: Server-side validation for all forms
The application is fully responsive and works seamlessly on:
- Desktop (1200px+)
- Tablet (768px - 1199px)
- Mobile (< 768px)
All admin and user interfaces adapt to screen size for optimal user experience.
- Clone the repository on your server
- Update default credentials in
src/config/Database.php - Set environment to production:
environment: - PHP_ENV=production
- Configure reverse proxy (Nginx/Apache) if needed
- Set up SSL certificate for HTTPS
- Run the application:
docker compose up -d
# Create backup
cp data/psychologist.db backup/psychologist_$(date +%Y%m%d).db
# Restore backup
cp backup/psychologist_YYYYMMDD.db data/psychologist.db- Fork the repository
- Create your feature branch:
git checkout -b feature/AmazingFeature - Commit your changes:
git commit -m 'Add some AmazingFeature' - Push to the branch:
git push origin feature/AmazingFeature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Port already in use
# Check what's using the port
lsof -i :8080
# Use different port
PORT=3000 docker compose upDatabase permission errors
# Fix permissions
chmod 755 data/
chmod 666 data/psychologist.dbContainer build issues
# Clean rebuild
docker compose down
docker system prune
docker compose up --buildFor support, please open an issue on GitHub or contact the development team.
- Bootstrap team for the excellent CSS framework
- PHP community for maintaining great documentation
- Docker for containerization simplicity
Made with β€οΈ for healthcare professionals and their patients.