{"id":25873161,"url":"https://github.com/tidjee-dev/sf-kanban","last_synced_at":"2025-10-14T17:08:18.003Z","repository":{"id":278077526,"uuid":"934440224","full_name":"tidjee-dev/sf-kanban","owner":"tidjee-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-19T22:05:35.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-14T17:08:16.536Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","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/tidjee-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2025-02-17T20:50:35.000Z","updated_at":"2025-02-19T22:05:38.000Z","dependencies_parsed_at":"2025-10-14T17:08:17.245Z","dependency_job_id":null,"html_url":"https://github.com/tidjee-dev/sf-kanban","commit_stats":null,"previous_names":["tidjee-dev/sf-kanban"],"tags_count":0,"template":false,"template_full_name":"tidjee-dev/symfony-template","purl":"pkg:github/tidjee-dev/sf-kanban","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tidjee-dev%2Fsf-kanban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tidjee-dev%2Fsf-kanban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tidjee-dev%2Fsf-kanban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tidjee-dev%2Fsf-kanban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tidjee-dev","download_url":"https://codeload.github.com/tidjee-dev/sf-kanban/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tidjee-dev%2Fsf-kanban/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279020085,"owners_count":26086805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"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":[],"created_at":"2025-03-02T08:29:59.274Z","updated_at":"2025-10-14T17:08:17.987Z","avatar_url":"https://github.com/tidjee-dev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kanban API 🚀\n\nA Symfony-based API for creating and managing a Kanban system. This API lets you manage boards, lists (columns), and tasks, and includes user authentication with JWT.\n\n## Features ✨\n\n- **User Management 👤**: Secure user registration, login, and profile management.\n- **Kanban Boards 📋**: Create, view, update, and delete boards.\n- **Dynamic Lists 📝**: Organize boards with customizable lists (columns).\n- **Task Management ✅**: Add, update, move, and delete tasks across lists.\n- **JWT Authentication 🔐**: Secure API endpoints with token-based authentication.\n- **MySQL Database 💾**: Robust data storage with Doctrine ORM.\n\n## Usage 🚀\n\n1. **User Registration \u0026 Login**\n\n   - **Register**: `POST /api/users/register`\n   - **Login**: `POST /api/users/login` (Receive a JWT token)\n\n2. **Manage Boards**\n\n   - **Create Board**: `POST /api/boards`\n   - **List Boards**: `GET /api/boards`\n   - **Get Board Details**: `GET /api/boards/{id}`\n   - **Update Board**: `PUT /api/boards/{id}`\n   - **Delete Board**: `DELETE /api/boards/{id}`\n\n3. **Manage Lists (Columns)**\n\n   - **Create List**: `POST /api/lists`\n   - **List Lists for a Board**: `GET /api/lists/board/{boardId}`\n   - **Update List**: `PUT /api/lists/{id}`\n   - **Delete List**: `DELETE /api/lists/{id}`\n\n4. **Manage Tasks**\n\n   - **Create Task**: `POST /api/tasks`\n   - **List Tasks for a List**: `GET /api/tasks/list/{listId}`\n   - **Move Task**: `PATCH /api/tasks/{id}/move`\n   - **Update Task**: `PUT /api/tasks/{id}`\n   - **Delete Task**: `DELETE /api/tasks/{id}`\n\n## API Endpoints 🌐\n\n### `Users` 👤\n\n| Method | Endpoint            | Description              |\n| ------ | ------------------- | ------------------------ |\n| POST   | /api/users/register | Register a new user      |\n| POST   | /api/users/login    | Login and obtain a JWT   |\n| GET    | /api/users/me       | Get current user details |\n| PUT    | /api/users/{id}     | Update user information  |\n| DELETE | /api/users/{id}     | Delete a user            |\n\n### `Boards` 📋\n\n| Method | Endpoint         | Description        |\n| ------ | ---------------- | ------------------ |\n| GET    | /api/boards      | List all boards    |\n| POST   | /api/boards      | Create a new board |\n| GET    | /api/boards/{id} | Get board details  |\n| PUT    | /api/boards/{id} | Update board       |\n| DELETE | /api/boards/{id} | Delete board       |\n\n### `Lists` 📝\n\n| Method | Endpoint                   | Description                |\n| ------ | -------------------------- | -------------------------- |\n| POST   | /api/lists                 | Create a new list          |\n| GET    | /api/lists/board/{boardId} | List all lists for a board |\n| PUT    | /api/lists/{id}            | Update a list              |\n| DELETE | /api/lists/{id}            | Delete a list              |\n\n### `Tasks` ✅\n\n| Method | Endpoint                 | Description                     |\n| ------ | ------------------------ | ------------------------------- |\n| POST   | /api/tasks               | Create a new task               |\n| GET    | /api/tasks/list/{listId} | List tasks for a given list     |\n| PATCH  | /api/tasks/{id}/move     | Move a task to a different list |\n| PUT    | /api/tasks/{id}          | Update task details             |\n| DELETE | /api/tasks/{id}          | Delete a task                   |\n\n## Data Model 🗺\n\n```mermaid\nerDiagram\n    USERS {\n      string id\n      string username\n      string email\n      string password\n      array roles\n      bool is_active\n      datetime created_at\n      datetime updated_at\n    }\n    BOARDS {\n      string id\n      string name\n      string description\n      string owner_id\n      datetime created_at\n      datetime updated_at\n    }\n    LISTS {\n      string id\n      string board_id\n      string title\n      int position\n      bool isCompleted\n      datetime created_at\n      datetime updated_at\n    }\n    TASKS {\n      string id\n      string list_id\n      string title\n      string description\n      int position\n      bool isCompleted\n      datetime created_at\n      datetime updated_at\n    }\n\n    USERS }|--o{ BOARDS : \"owns\"\n    BOARDS }|--|{ LISTS : \"has\"\n    LISTS }|--|{ TASKS : \"contains\"\n```\n\n## Key Entities 🔑\n\n- 👤 **Users**: Registered users for the Kanban system\n\n  | Column     | Type     | Nullable | Description        |\n  | ---------- | -------- | -------- | ------------------ |\n  | id         | STRING   | NO       | Primary key        |\n  | username   | STRING   | NO       | Unique username    |\n  | email      | STRING   | NO       | User email         |\n  | password   | STRING   | NO       | Encrypted password |\n  | roles      | ARRAY    | NO       | User roles         |\n  | isActive   | BOOLEAN  | NO       | User status        |\n  | created_at | DATETIME | NO       | Creation date      |\n  | updated_at | DATETIME | YES      | Last update date   |\n\n  \u003e _Note:_ For the `id` column, use this format: `USR-\u003ctimestamp\u003e-\u003cautogeneratednumber(4)\u003e`\n\n- 📋 **Boards**: Kanban boards for organizing lists and tasks\n\n  | Column      | Type     | Nullable | Description           |\n  | ----------- | -------- | -------- | --------------------- |\n  | id          | STRING   | NO       | Primary key           |\n  | name        | STRING   | NO       | Board name            |\n  | description | TEXT     | YES      | Board description     |\n  | owner_id    | STRING   | NO       | ID of the board owner |\n  | created_at  | DATETIME | NO       | Creation date         |\n  | updated_at  | DATETIME | YES      | Last update date      |\n\n  \u003e _Note:_ For the `id` column, use this format: `BRD-\u003ctimestamp\u003e-\u003cautogeneratednumber(4)\u003e`\n\n- 📝 **Kanban Lists**: Columns within a board\n\n  | Column      | Type     | Nullable | Description                 |\n  | ----------- | -------- | -------- | --------------------------- |\n  | id          | STRING   | NO       | Primary key                 |\n  | board_id    | STRING   | NO       | Associated board ID         |\n  | title       | STRING   | NO       | List title                  |\n  | position    | INT      | YES      | Order position in the board |\n  | isCompleted | BOOLEAN  | NO       | List completion status      |\n  | created_at  | DATETIME | NO       | Creation date               |\n  | updated_at  | DATETIME | YES      | Last update date            |\n\n  \u003e _Note:_ For the `id` column, use this format: `LST-\u003ctimestamp\u003e-\u003cautogeneratednumber(4)\u003e`\n\n- ✅ **Tasks**: Tasks that are assigned to lists\n\n  | Column      | Type     | Nullable | Description                    |\n  | ----------- | -------- | -------- | ------------------------------ |\n  | id          | STRING   | NO       | Primary key                    |\n  | list_id     | STRING   | NO       | Associated list ID             |\n  | title       | STRING   | NO       | Task title                     |\n  | description | TEXT     | YES      | Task details                   |\n  | position    | INT      | YES      | Order position within the list |\n  | isCompleted | BOOLEAN  | NO       | Task completion status         |\n  | created_at  | DATETIME | NO       | Creation date                  |\n  | updated_at  | DATETIME | YES      | Last update date               |\n\n  \u003e _Note:_ For the `id` column, use this format: `TSK-\u003ctimestamp\u003e-\u003cautogeneratednumber(4)\u003e`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftidjee-dev%2Fsf-kanban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftidjee-dev%2Fsf-kanban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftidjee-dev%2Fsf-kanban/lists"}