{"id":19878843,"url":"https://github.com/jakubkorytko/data-graphs","last_synced_at":"2026-05-14T09:33:13.326Z","repository":{"id":213352029,"uuid":"625006263","full_name":"JakubKorytko/data-graphs","owner":"JakubKorytko","description":"Transform raw data into captivating visual stories with this app, effortlessly craft stunning data charts that unveil insights and trends","archived":false,"fork":false,"pushed_at":"2023-12-29T09:03:29.000Z","size":614,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T17:49:12.732Z","etag":null,"topics":["charts","data-analysis","mit-license","open-source"],"latest_commit_sha":null,"homepage":"","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/JakubKorytko.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2023-04-07T20:18:34.000Z","updated_at":"2023-12-20T10:23:26.000Z","dependencies_parsed_at":"2023-12-26T23:31:22.411Z","dependency_job_id":"9931f70a-3dbe-4f22-ad59-0ad75f5a292f","html_url":"https://github.com/JakubKorytko/data-graphs","commit_stats":null,"previous_names":["jakubkorytko/data-graphs"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fdata-graphs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fdata-graphs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fdata-graphs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubKorytko%2Fdata-graphs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakubKorytko","download_url":"https://codeload.github.com/JakubKorytko/data-graphs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241309093,"owners_count":19941722,"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":["charts","data-analysis","mit-license","open-source"],"created_at":"2024-11-12T17:06:50.741Z","updated_at":"2026-05-14T09:33:13.264Z","avatar_url":"https://github.com/JakubKorytko.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data Graphs\n\n[![Version](https://img.shields.io/github/v/tag/JakubKorytko/data-graphs?style=for-the-badge\u0026label=version)](https://img.shields.io/github/v/tag/JakubKorytko/data-graphs?style=for-the-badge\u0026label=version)\n[![License](https://img.shields.io/github/license/JakubKorytko/data-graphs?style=for-the-badge)](https://img.shields.io/github/license/JakubKorytko/data-graphs?style=for-the-badge\u0026label=license)\n\n![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge\u0026logo=react\u0026logoColor=%2361DAFB)\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![Bootstrap](https://img.shields.io/badge/bootstrap-%238511FA.svg?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white)\n![React Testing-Library](https://img.shields.io/badge/-React_Testing_Library-%23E33332?style=for-the-badge\u0026logo=testing-library\u0026logoColor=white)\n![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge\u0026logo=jest\u0026logoColor=white)\n![PHPUnit](https://img.shields.io/badge/PHPUnit-white.svg?style=for-the-badge\u0026logo=php\u0026logoColor=%23777BB4)\n![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge\u0026logo=html5\u0026logoColor=white)\n![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge\u0026logo=css3\u0026logoColor=white)\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge\u0026logo=vite\u0026logoColor=white)\n![Yarn](https://img.shields.io/badge/yarn-%232C8EBB.svg?style=for-the-badge\u0026logo=yarn\u0026logoColor=white)\n![ESLint](https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge\u0026logo=eslint\u0026logoColor=white)\n![PHP](https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge\u0026logo=php\u0026logoColor=white)\n![Laravel](https://img.shields.io/badge/laravel-%23FF2D20.svg?style=for-the-badge\u0026logo=laravel\u0026logoColor=white)\n![MariaDB](https://img.shields.io/badge/MariaDB-003545?style=for-the-badge\u0026logo=mariadb\u0026logoColor=white)\n![React Context](https://img.shields.io/badge/react_context-%2320232a.svg?style=for-the-badge\u0026logo=react\u0026logoColor=%2361DAFB)\n\n## Table of Contents\n\n- [Data Graphs](#data-graphs)\n  - [Table of Contents](#table-of-contents)\n  - [Introduction](#introduction)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n    - [Client installation](#client-installation)\n    - [Server installation](#server-installation)\n  - [Endpoints](#endpoints)\n  - [Production build](#production-build)\n    - [Build client](#build-client)\n    - [Prepare server](#prepare-server)\n  - [Tests](#tests)\n  - [Troubleshooting](#troubleshooting)\n  - [Contributing](#contributing)\n  - [Contact](#contact)\n  - [License](#license)\n  - [TODO / Upcoming features](#todo--upcoming-features)\n\n## Introduction\n\nIn an age of information overload, making sense of raw data has become a critical skill. Welcome to Data Graphs, your all-in-one solution for transforming mundane data sets into compelling visual stories.\n\nIn today's dynamic landscape, where data drives decision making across industries, the ability to effectively communicate insights is paramount. With Data Graphs, you can effortlessly create stunning data charts that not only reveal hidden patterns and trends, but also captivate your audience with visually compelling narratives.\n\n## Prerequisites\n\n**Note:** Versions stated below are the ones used during development. Other versions may work as well, but they have not been tested.\n\n- [Node.js](https://nodejs.org/en/) `v20.10.0`\n- [Yarn](https://yarnpkg.com/) `v1.22.21`\n- [PHP](https://www.php.net/) `v8.2.4`\n- [Composer](https://getcomposer.org/) `v2.5.5`\n- [Laravel](https://laravel.com/) `v10.38.1`\n- [Any database supported by Laravel](https://laravel.com/docs/10.x/database) `MariaDB v10.4.27 originally used`\n\n## Installation\n\n1. Clone the repository:\n\n    ```bash\n    git clone https://github.com/JakubKorytko/data-graphs\n    ```\n\n1. Enter the project directory:\n\n    ```bash\n    cd data-graphs\n    ```\n\n**Note:** Install \u0026 run the client and the server apps (next steps) in separate terminals starting from the project directory.\nRunning the apps will freeze the terminal until you stop them.\n\n### Client installation\n\n1. Enter the client directory:\n\n    ```bash\n    cd client\n    ```\n\n1. Install dependencies:\n\n    ```bash\n    yarn install\n    ```\n\n1. Run the app in development mode:\n\n    ```bash\n    yarn dev\n    ```\n\n### Server installation\n\n**Note:** The server app requires a database to work. Make sure you have one set up before proceeding and that it's running. You also need the database credentials for the environment variables.\n\n1. Enter the server directory:\n\n    ```bash\n    cd server\n    ```\n\n1. Run the setup script:\n\n    ```bash\n    composer setup\n    ```\n\n1. Set the proper values in the `.env` file according to your environment. The most important ones are the database-related variables. (The rest can be left as they are in most cases.)\n\n1. Run the server in development mode:\n\n    ```bash\n    composer serve\n    ```\n\n**Note:** Both the client and the server apps need to be running for the project to work.\n\n## Endpoints\n\nThe client app is a single-page application and is available at the root URL (`/`).\nIt uses the server app for authentication and data storage.\nThere is no need to use the server app directly, but if you want to (or want to use the API for something else), here are the available endpoints:\n\n- `GET /` - not used at the moment, displays \"API is running\" message\n- `GET /status` - get the server status (returns `OK` if the server is running, status code: `200`)\n- `GET /channels/read` - get all channels in form of a JSON array\n- `POST /channels/create` - create a new channel, payload:\n  - `name` - channel name (unique, required, string, min: 1, max: 65535)\n  - `clients` - number of clients (required, integer, min: 0, max: 2147483647)\n- `PUT /channels/update/{id}` - update a channel, payload:\n  - `name` - channel name (unique, required, string, min: 1, max: 65535)\n  - `clients` - number of clients (required, integer, min: 0, max: 2147483647)\n- `DELETE /channels/delete/{id}` - delete a channel\n\n## Production build\n\n### Build client\n\n1. Enter the client directory:\n\n    ```bash\n    cd client\n    ```\n\n1. Build the app for production:\n\n    ```bash\n    yarn build\n    ```\n\nThe build will be located in the `client/dist` directory.\\\nYou can run it using a `yarn preview` command from the `client` directory.\n\n### Prepare server\n\n1. Enter the server directory:\n\n    ```bash\n    cd server\n    ```\n\n1. Make sure that database credentials are set properly and that the database is running.\n\n1. Run the following command:\n\n    ```bash\n    composer prod\n    ```\n\n1. Run the following command:\n\n    ```bash\n    yarn prod\n    ```\n\n1. Edit the `.env` file and set the `APP_ENV` variable to `production` and the `APP_DEBUG` variable to `false`.\n\nThe server is now ready to be deployed.\\\nYou can run it using a `composer serve` command from the `server` directory.\n\n## Tests\n\n---\n\n**As for the `v0.1.1` version, the tests do not cover the majority of the code, and most of the existing tests do not pass due to changes in the project structure. This will be fixed in the next patch.**\n\n---\n\nTo run the client tests, use the following command **in the `client` directory**:\n\n```bash\nyarn test\n```\n\nOr, to run the server tests, use the following command **in the `server` directory**:\n\n```bash\ncomposer test\n```\n\n## Troubleshooting\n\nIf you are using Windows or your git client converts line endings to CRLF,\nyou may encounter the following error when trying to run the client app:\n\n```bash\nerror Expected linebreaks to be 'LF' but found 'CRLF'  linebreak-style\n```\n\nThis is caused by the fact that the project uses the eslint.\nTo fix this, you can either:\n\n- change the line endings to LF (recommended)\n  - by simply running `yarn eslint --fix` in the `client` directory\n- disable (or change) the eslint rule\n  - read more about it [here](https://eslint.style/rules/js/linebreak-style)\n\nNote that if you change the line endings to LF and decide not to disable the eslint rule,\nyour editor or git client may convert them back to CRLF.\nMake sure your editor and git config are set up correctly.\n\n## Contributing\n\nIf you find issues or have suggestions for improvements,\nfeel free to open an issue or submit a pull request.\nContributions are welcome!\n\n## Contact\n\nIf you have any questions, feel free to contact me at \u003cjakub@korytko.me\u003e.\n\n## License\n\nThis project is released under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## TODO / Upcoming features\n\nThis is a list of features that lead to the `v0.2.0` release:\n\n(This list is not exhaustive and may change at any time.\nPatch versions may and probably will be released in the meantime.\nKeep in mind that the order of the items is not necessarily the order in which they will be implemented.)\n\n- [ ] Add more tests and fix the existing ones\n- [ ] Add the authentication system\n- [ ] Improve the UI\n- [ ] Clean up the code\n- [ ] Add new technologies (for both the client and the server) and refactor the code accordingly\n- [ ] Change Laravel to JavaScript-based backend (probably Node.js)\n- [ ] Implement CI/CD\n- [ ] Look for and fix potential security issues, vulnerabilities, and bugs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubkorytko%2Fdata-graphs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubkorytko%2Fdata-graphs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubkorytko%2Fdata-graphs/lists"}