{"id":16465904,"url":"https://github.com/yusuftaufiq/simple-tree","last_synced_at":"2026-04-05T22:33:22.325Z","repository":{"id":186550860,"uuid":"675020852","full_name":"yusuftaufiq/simple-tree","owner":"yusuftaufiq","description":"Simple family tree web application with a single parent each.","archived":false,"fork":false,"pushed_at":"2023-08-06T15:27:09.000Z","size":379,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T13:51:42.547Z","etag":null,"topics":["alpinejs","daisyui","laravel","php","sql","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yusuftaufiq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-05T14:10:29.000Z","updated_at":"2023-08-06T15:27:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"c00ff5f5-616f-46f5-8b96-88a983481594","html_url":"https://github.com/yusuftaufiq/simple-tree","commit_stats":null,"previous_names":["yusuftaufiq/simple-tree"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusuftaufiq%2Fsimple-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusuftaufiq%2Fsimple-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusuftaufiq%2Fsimple-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusuftaufiq%2Fsimple-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yusuftaufiq","download_url":"https://codeload.github.com/yusuftaufiq/simple-tree/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241026702,"owners_count":19896682,"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","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":["alpinejs","daisyui","laravel","php","sql","tailwindcss","typescript"],"created_at":"2024-10-11T11:35:41.317Z","updated_at":"2025-12-31T01:13:44.435Z","avatar_url":"https://github.com/yusuftaufiq.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://laravel.com\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg\" width=\"400\" alt=\"Laravel Logo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n## Overview\n\nSimple family tree web application with a single parent each.\n\n### Technical Details\n\n- Backend: `PHP`, `Laravel`, `RDBMS` (eg: `MySQL`)\n- Frontend: `Alpine.js`, `TypeScript`, `TailwindCSS`, `daisyUI`\n\n## Installation\n\n- Requirements:\n  - `PHP \u003e= 8.1` with `composer` installed\n  - `Node.js \u003e= 18` with `npm` installed\n  - Relational Database, for example one from the following list:\n    - `MySQL \u003e= 8.0`\n    - `MariaDB \u003e= 10.2`\n    - `PostgreSQL \u003e= 9.4`\n    - `SQLite \u003e= 3.8.3`\n    - `SQL Server \u003e= 2008`\n- Clone this repository to your local machine\n  ```\n  git clone https://github.com/yusuftaufiq/simple-tree.git\n  ```\n- Change your active directory to the cloned folder\n- Copy sample environment files from `.env.example` to `.env`\n- Configure database configuration in `.env` which has `DB_` prefix, for example:\n  ```\n  DB_CONNECTION=mysql\n  DB_HOST=127.0.0.1\n  DB_PORT=3306\n  DB_DATABASE=family_tree\n  DB_USERNAME=root\n  DB_PASSWORD=password\n  ```\n- Install all dependencies with\n  ```\n  composer install\n  npm install\n  ```\n- Set app key\n  ```\n  php artisan key:generate\n  ```\n- Run database migration\n  ```\n  php artisan migrate\n  ```\n- Serve the application on the PHP development server\n  ```\n  php artisan serve\n  ```\n- Run the vite development server\n  ```\n  npm run dev\n  ```\n- Finally, open your browser and visit your application URL (use `http://127.0.0.1:8000` by default)\n- Additionally, you can run the following additional commands\n  - `php artisan db:seed`: seed database with default hierarchy tree as shown below:\n    ![table](./images/overview-table.png)\n    ![tree](./images/overview-tree.png)\n  - `php artisan db:seed --class PersonSeeder`: seed database with hierarchical trees of random persons\n  - `npm run format`: run code formatter tool using Prettier and Laravel Pint, this command will format the following file extensions automatically:\n    - `*.php`: with Laravel Pint using PSR 12 code style\n    - `*.blade.php`: with a Prettier [Blade Formatter](https://github.com/shufo/blade-formatter)\n    - `*.css`, `*.js`, `*.ts`, `*.json`, `*.xml`, `*.md`: with the default Prettier configuration\n  - `npm run lint`: run static code analyzer using PHPStan, ESLint, TypeScript check\n  - `npm run build`\n\n## Usage\n\n### Via Browser\n\nVisit the root URL path in your browser like `http://127.0.0.1:8000`\n\n### Via API\n\n- `[POST] /api/persons`: create a new person, for example with curl\n  ```\n  curl -H 'content-type: application/json' -H 'accept: application/json' -v -X POST -d '{\"name\": \"Joko\", \"gender\": \"MALE\", \"parent_id\": null}' http://127.0.0.1:8000/api/persons\n  ```\n- `[GET] /api/persons`: get persons, for example with curl\n  ```\n  curl -H 'content-type: application/json' -H 'accept: application/json' -v -X GET http://127.0.0.1:8000/api/persons\n  ```\n- `[GET] /api/persons/{:id}` : show person by id, for example with curl\n  ```\n  curl -H 'content-type: application/json' -H 'accept: application/json' -v -X GET http://127.0.0.1:8000/api/persons/1\n  ```\n- `[PUT] /api/persons/{:id}`: replace person data by id, for example with curl\n  ```\n  curl -H 'content-type: application/json' -H 'accept: application/json' -v -X PUT -d '{\"name\": \"Jojo\", \"gender_id\": \"MALE\", \"parent_id\": 10}' http://127.0.0.1:8000/api/persons/1\n  ```\n- `[DELETE] /api/persons/{:id}`: delete person by id, for example with curl\n  ```\n  curl -H 'content-type: application/json' -H 'accept: application/json' -v -X DELETE http://127.0.0.1:8000/api/persons/1\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusuftaufiq%2Fsimple-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusuftaufiq%2Fsimple-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusuftaufiq%2Fsimple-tree/lists"}