A showcase healthcare appointment scheduling system demonstrating enterprise-grade .NET development practices.
- Patient management
- Doctor scheduling
- Appointment booking and management
- Rich domain model with business rules
- Clean Architecture implementation
- CQRS pattern with MediatR
- Enterprise-grade error handling
- Cross-platform compatibility with SQLite
- .NET 8
- Entity Framework Core
- SQLite Database
- MediatR for CQRS
- FluentValidation
- xUnit for testing
- Swagger for API documentation
This project follows Clean Architecture principles:
src/
├── MedTime.Domain/ # Enterprise business rules
│ ├── Entities/ # Domain entities
│ ├── ValueObjects/ # Value objects
│ └── Exceptions/ # Domain-specific exceptions
│
├── MedTime.Application/ # Application business rules
│ ├── Common/ # Shared interfaces
│ └── Features/ # CQRS commands and queries
│
├── MedTime.Infrastructure/# External concerns
│ ├── Persistence/ # Database implementation
│ └── Services/ # External services
│
└── MedTime.Api/ # Entry point and controllers
- .NET 8.0 SDK
- Any IDE that supports C# (VS Code, Visual Studio, or Rider)
- Clone the repository
git clone https://github.com/PeterM45/medtime.git
cd medtime
- Restore dependencies
dotnet restore
- Apply database migrations
cd src/MedTime.Api
dotnet ef database update
- Run the application
dotnet run
The API will be available at https://localhost:5001
with Swagger documentation at /swagger
.
POST /api/patients
- Create a new patientGET /api/patients/{id}
- Get patient details
POST /api/doctors
- Create a new doctorGET /api/doctors/{id}
- Get doctor detailsGET /api/doctors/active
- List all active doctors
POST /api/appointments
- Schedule an appointmentGET /api/appointments/{id}
- Get appointment details
dotnet test
- 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