This repository contains the implementation of a Calendar Event Management System based on the provided technical assessment. The system allows users to add, update, list, and delete events using REST APIs. The design follows Domain Driven Design (DDD) principles and is inspired by the work of Orphail and MohammadMehrabani in this repository.
Overview
Installation
Technical Details
Available Endpoints
Features Implemented
Assumptions
The Calendar Event Management System is a RESTful API application that allows users to manage calendar events. Users can create, update, list, and delete events. The system supports recurring events and validates against event overlaps. No authentication or authorization is required for accessing the APIs.
To run the Calendar Event Management System locally, follow these steps:
- Clone this repository
git clone <repository-url>
- Navigate to the project directory
cd UN1Q-Technical-Task
composer install
cp .env.example .env
php artisan key:generate
- Set database connection in the
.env
variables that start withDB_*
and runphp artisan migrate
php artisan test
Structure particularities
What's inside each layer?
HTTP Method | Endpoint | Description |
---|---|---|
POST | /api/events/new | Create a new event |
PUT | /api/events/{id} | Update an existing event |
GET | /api/events | List events, allowing filtering by date-time range |
DELETE | /api/events/{id} | Delete an event |
- Create new events, supporting recurring patterns.
- Update individual event instances.
- List events within a specific date-time range.
- Delete individual event instances.
- Events are limited to a single day (no multi-day events).
- Recurring events generate occurrences within the specified time range.
- Recurring patterns include daily, weekly, monthly, and yearly.
- All events can be updated and deleted regardless of past or future dates.
Please refer to the code for more detailed information on the implementation. If you have any questions or need further assistance, feel free to reach out.