{"id":51175460,"url":"https://github.com/berkanserbes/smart-appointment-system","last_synced_at":"2026-06-27T03:30:35.608Z","repository":{"id":357349408,"uuid":"1156323888","full_name":"berkanserbes/smart-appointment-system","owner":"berkanserbes","description":"Smart, secure appointment management API built with Spring Boot, JWT, Redis, and PostgreSQL. Includes automated email reminders, role-based access, and admin reporting.","archived":false,"fork":false,"pushed_at":"2026-05-12T11:35:19.000Z","size":180,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T12:34:58.044Z","etag":null,"topics":["java","java-security","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/berkanserbes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-12T14:20:00.000Z","updated_at":"2026-05-12T07:32:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/berkanserbes/smart-appointment-system","commit_stats":null,"previous_names":["berkanserbes/smart-appointment-system"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/berkanserbes/smart-appointment-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkanserbes%2Fsmart-appointment-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkanserbes%2Fsmart-appointment-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkanserbes%2Fsmart-appointment-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkanserbes%2Fsmart-appointment-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/berkanserbes","download_url":"https://codeload.github.com/berkanserbes/smart-appointment-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/berkanserbes%2Fsmart-appointment-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34840899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","java-security","spring-boot"],"created_at":"2026-06-27T03:30:35.079Z","updated_at":"2026-06-27T03:30:35.588Z","avatar_url":"https://github.com/berkanserbes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 📅 Smart Appointment System\n\n### A modern, secure, and scalable appointment management platform\n\n[![Java](https://img.shields.io/badge/Java-25-ED8B00?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)](https://openjdk.org/)\n[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.10-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white)](https://spring.io/projects/spring-boot)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)](https://www.postgresql.org/)\n[![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge\u0026logo=redis\u0026logoColor=white)](https://redis.io/)\n[![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white)](https://www.docker.com/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](LICENSE)\n\n[Features](#-features) • [Quick Start](#-quick-start) • [Documentation](#-documentation) • [Tech Stack](#tech-stack) • [Contributing](#-contributing)\n\n\u003c/div\u003e\n\n---\n\n## 🌟 Features\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n### 🔐 Authentication \u0026 Security\n- JWT-based authentication\n- Role-based access control (USER/ADMIN)\n- BCrypt password encryption\n- Secure session management\n\n### 📊 Appointment Management\n- Complete lifecycle management\n- Conflict detection\n- Status tracking (Scheduled, Confirmed, Completed, etc.)\n- Time slot validation\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n### 🚀 Performance \u0026 Scalability\n- Redis caching layer with graceful fallback\n- Scheduled background task processing\n- Email notification delivery via SMTP\n- Docker containerization\n\n### 📝 Audit \u0026 Compliance\n- Comprehensive audit logging\n- User action tracking\n- IP address recording\n- Compliance-ready reports\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### ✨ Additional Features\n\n- 👥 **Service Provider Management** - Manage professionals and their services\n- 📍 **Location Management** - Multiple location support\n- 🏷️ **Category System** - Organize appointments by type\n- ⭐ **Feedback System** - Collect and manage user reviews\n- 📧 **Email Notifications** - Automated reminder system\n- 📈 **Reporting Dashboard** - Admin analytics and insights\n- 📖 **API Documentation** - Interactive Swagger UI\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Docker \u0026 Docker Compose\n- Java 25 (for local development)\n- Maven 3.9+ (for local development)\n\n### 🐳 Run with Docker (Recommended)\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/yourusername/smart-appointment-system.git\ncd smart-appointment-system\n\n# 2. Setup environment\ncp .env.example .env.development\n# Edit .env.development with your configuration\n\n# 3. Start all services\ndocker-compose --env-file .env.development up --build\n\n# 4. Access the application\nAPI: http://localhost:8080\nSwagger UI: http://localhost:8080/swagger-ui.html\n```\n\n### 💻 Local Development\n\n```bash\n# 1. Start PostgreSQL and Redis\ndocker-compose up postgres redis -d\n\n# 2. Run the application\nmvn spring-boot:run\n\n# 3. Access Swagger UI\nopen http://localhost:8080/swagger-ui.html\n```\n\n---\n\n## 📚 Documentation\n\n| Document | Description |\n|----------|-------------|\n| 📖 [Architecture](docs/ARCHITECTURE.md) | System design and architecture patterns |\n| 🗄️ [Database Schema](docs/DATABASE_SCHEMA.md) | Complete database structure and relationships |\n| 🐳 [Docker Guide](docs/DOCKER_GUIDE.md) | Docker setup and commands |\n| ⚙️ [Environment Setup](docs/ENVIRONMENT_SETUP.md) | Configuration and environment variables |\n| 🤝 [Contributing](CONTRIBUTING.md) | How to contribute to the project |\n---\n\n## Tech Stack\n\n### Backend Framework\n\u003cp\u003e\n\u003cimg src=\"https://img.shields.io/badge/Java-ED8B00?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white\" alt=\"Java\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Spring%20Boot-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\" alt=\"Spring Boot\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Spring%20Security-6DB33F?style=for-the-badge\u0026logo=springsecurity\u0026logoColor=white\" alt=\"Spring Security\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Spring%20Data%20JPA-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white\" alt=\"Spring Data JPA\"/\u003e\n\u003c/p\u003e\n\n### Database \u0026 Cache\n\u003cp\u003e\n\u003cimg src=\"https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\" alt=\"PostgreSQL\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Redis-DC382D?style=for-the-badge\u0026logo=redis\u0026logoColor=white\" alt=\"Redis\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Hibernate-59666C?style=for-the-badge\u0026logo=hibernate\u0026logoColor=white\" alt=\"Hibernate\"/\u003e\n\u003c/p\u003e\n\n### Security \u0026 API\n\u003cp\u003e\n\u003cimg src=\"https://img.shields.io/badge/JWT-000000?style=for-the-badge\u0026logo=jsonwebtokens\u0026logoColor=white\" alt=\"JWT\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Swagger-85EA2D?style=for-the-badge\u0026logo=swagger\u0026logoColor=black\" alt=\"Swagger\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/OpenAPI-6BA539?style=for-the-badge\u0026logo=openapiinitiative\u0026logoColor=white\" alt=\"OpenAPI\"/\u003e\n\u003c/p\u003e\n\n### DevOps \u0026 Tools\n\u003cp\u003e\n\u003cimg src=\"https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Maven-C71A36?style=for-the-badge\u0026logo=apachemaven\u0026logoColor=white\" alt=\"Maven\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Git-F05032?style=for-the-badge\u0026logo=git\u0026logoColor=white\" alt=\"Git\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Lombok-BC4521?style=for-the-badge\u0026logo=lombok\u0026logoColor=white\" alt=\"Lombok\"/\u003e\n\u003c/p\u003e\n\n---\n\n## 🏗️ Architecture\n\n```\n┌─────────────────────────────────────────┐\n│          Client Applications            │\n└──────────────┬──────────────────────────┘\n               │ REST API\n┌──────────────▼──────────────────────────┐\n│         Controller Layer                │\n│  • Request validation                   │\n│  • Response formatting                  │\n└──────────────┬──────────────────────────┘\n               │ DTOs\n┌──────────────▼──────────────────────────┐\n│          Service Layer                  │\n│  • Business logic                       │\n│  • Transaction management               │\n│  • Authorization                        │\n└──────────────┬──────────────────────────┘\n               │ Entities\n┌──────────────▼──────────────────────────┐\n│        Repository Layer                 │\n│  • Data access                          │\n│  • Query optimization                   │\n└──────────────┬──────────────────────────┘\n               │\n    ┌──────────┴──────────┐\n    ▼                     ▼\n┌──────────┐         ┌──────────┐\n│PostgreSQL│         │  Redis   │ \n└──────────┘         └──────────┘\n```\n\n**Key Design Patterns:**\n- 🎯 Repository Pattern\n- 🔄 DTO Pattern\n- 🏭 Service Layer Pattern\n- 🗺️ Mapper Pattern\n- 🔨 Builder Pattern\n\n---\n\n## 📊 Project Structure\n\n```\nsmart-appointment-system/\n├── 📁 src/main/java/com/smartappointment/\n│   ├── 🔧 config/              # Configuration classes\n│   ├── 🎮 controller/          # REST endpoints\n│   ├── 📦 dto/                 # Data Transfer Objects\n│   ├── ⚠️ exception/           # Custom exceptions\n│   ├── 🗺️ mapper/              # Entity-DTO mappers\n│   ├── 📊 model/               # JPA entities \u0026 enums\n│   ├── 💾 repository/          # Data access layer\n│   ├── 🔐 security/            # Security components\n│   ├── 💼 service/             # Business logic\n│   └── 🛠️ util/                # Utility classes\n│\n├── 📁 docs/                    # Documentation\n│   ├── ARCHITECTURE.md\n│   ├── DATABASE_SCHEMA.md\n│   ├── DOCKER_GUIDE.md\n│   └── ENVIRONMENT_SETUP.md\n│\n├── 🐳 docker-compose.yml       # Docker orchestration\n├── 📋 Dockerfile               # Application container\n├── 📝 pom.xml                  # Maven dependencies\n└── 📖 README.md                # You are here!\n```\n\n---\n\n## 🔒 Security Features\n\n- 🔐 **JWT Authentication** - Stateless token-based auth\n- 👤 **Role-Based Access Control** - USER and ADMIN roles\n- 🔑 **Password Encryption** - BCrypt hashing\n- 🛡️ **CORS Protection** - Configurable CORS policies\n- 📝 **Audit Logging** - Complete action tracking\n- 🚫 **Input Validation** - Request validation with Bean Validation\n\n---\n\n## 🎯 API Endpoints\n\n### 🔓 Public Endpoints\n- `POST /api/auth/register` - User registration\n- `POST /api/auth/login` - User login\n\n### 🔐 Protected Endpoints\n- `GET /api/appointments` - List appointments\n- `POST /api/appointments` - Create appointment\n- `GET /api/categories` - List categories\n- `GET /api/providers` - List service providers\n- `POST /api/feedback` - Submit feedback\n\n### 👑 Admin Only\n- `GET /api/reports/dashboard` - Admin dashboard\n- `POST /api/categories` - Create category\n- `DELETE /api/appointments/{id}` - Delete appointment\n\n**📖 Full API documentation available at:** `http://localhost:8080/swagger-ui.html`\n\n---\n\n## 🧪 Testing\n\n```bash\n# Run all tests\nmvn test\n\n# Run with coverage\nmvn test jacoco:report\n\n# Run specific test\nmvn test -Dtest=AppointmentServiceTest\n```\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Quick Contribution Steps\n\n1. 🍴 Fork the repository\n2. 🌿 Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. ✅ Commit your changes (`git commit -m 'feat: add amazing feature'`)\n4. 📤 Push to the branch (`git push origin feature/amazing-feature`)\n5. 🎉 Open a Pull Request\n\n---\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n### ⭐ Star this repository if you find it helpful!\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkanserbes%2Fsmart-appointment-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberkanserbes%2Fsmart-appointment-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkanserbes%2Fsmart-appointment-system/lists"}