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.
Version PHP SQLite Bootstrap Docker
- 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 port
To run on a different port:
PORT=3000 docker compose up
The 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 up
Database 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.