{"id":27154355,"url":"https://github.com/ilertha/hiring-todolist-app","last_synced_at":"2025-04-08T17:19:44.981Z","repository":{"id":267123181,"uuid":"900323913","full_name":"ilertha/hiring-todoList-app","owner":"ilertha","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-11T01:08:21.000Z","size":4427,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T17:19:40.119Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/ilertha.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-08T13:43:39.000Z","updated_at":"2025-03-24T03:58:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"feab1c77-3c29-47e9-8e52-505b451488a8","html_url":"https://github.com/ilertha/hiring-todoList-app","commit_stats":null,"previous_names":["rizzolib/hiring-todolist-app","ilertha/hiring-todolist-app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilertha%2Fhiring-todoList-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilertha%2Fhiring-todoList-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilertha%2Fhiring-todoList-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilertha%2Fhiring-todoList-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilertha","download_url":"https://codeload.github.com/ilertha/hiring-todoList-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247888568,"owners_count":21013002,"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":[],"created_at":"2025-04-08T17:19:44.198Z","updated_at":"2025-04-08T17:19:44.974Z","avatar_url":"https://github.com/ilertha.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hiring To-Do List Application\n\n## Description\nA dynamic, full-stack to-do list app designed to showcase the integration of frontend and backend technologies. This application features task management, user authentication, and seamless data persistence with MySQL. The goal is to demonstrate how React (frontend) and Node.js (backend) can work together in a modern web application.\n\n\n## Features\n- **Add, Edit, and Delete Tasks**: Easily manage tasks within the app.\n- **Mark as Completed**: Track completed tasks with the ability to filter them.\n- **Data Persistence**: All tasks are stored in a MySQL database, ensuring they persist across sessions.\n- **User Authentication**: Secure login and registration using JWT and Bcrypt.\n- **API Integration**: A backend API handles CRUD operations for tasks.\n- **Responsive Design**: Optimized for both desktop and mobile devices.\n- **Light/Dark Mode**: Smart support for light and dark themes.\n\n\n## Tech Stack\n- ### Frontend:\n    - **Framework**: React(v18.x)\n    - **Styling**: CSS, Styled Components/Material-UI\n    - **State Management**: Redux\n\n- ### Backend:\n    - **Runtime**: Node.js(v16.0.0 or higher)\n    - **Framework**: Express.js\n    - **Database**: MySQL(v8.0.0 or higher)\n    - **Authentication**: JWT/Bcrypt\n\n\n## Prerequisites\nBefore you start, make sure you have the following installed:\n- **Node.js**: Version 16.0.0 or higher.\n- **MySql**: Version 8.0.0 or higer.\n\n\n## Installation\nFollow the steps below to set up and run the application locally.\n\n1. **Clone the repository**:\n\n    Clone the repository to your local machine:\n\n    ```bash\n    git clone https://github.com/ilertha/hiring-todo-list-app\n    cd hiring-todo-list-app\n    ```\n2. **Install dependencies**:\n    - **Backend**:\n        Navigate to the backend directory and install the dependencies:\n        ```bash\n        cd backend\n        npm install\n        ```\n    - **Frontend**:\n        Navigate to the frontend directory and install the dependencies:\n        ```bash\n        cd frontend\n        npm install\n        ```\n3. **Set Up Environment Variables**:\n    Create a ```.env``` file in the backend directory. You can refer to the ```.env.example``` file for a template.\n    ```.env``` Configuration Example:\n    ```env\n        DB_TYPE = \"mysql\"\n        DB_HOST = \"localhost\"\n        DB_USERNAME = \"root\"\n        DB_PASSWORD = \n        DB_PORT = 3306\n        DB_NAME = \"base_admin\"\n        PORT = 8000\n        SECRET_KEY = \"base_admin\"\n        EXPIRE_TIME = 3600\n\n    ```\n    - ```DB_PASSWORD```: Set your MySQL root password if applicable.\n    - ```DB_NAME```: The name of the database (you can create a database named ```base_admin``` in MySQL).\n4. **Set Up MySQL**:\n    If you're using XAMPP:\n    - Install **XAMPP v3.3.0** (or the latest version).\n    - Open **XAMPP Control Panel** and start the **MySQL** service.\n    Alternatively, if you're using a standalone MySQL installation, make sure the MySQL service is running.\n\n\n## Usage\n\n1. **Start the backend server**:\n    Navigate to the ```backend``` directory and run the following commands:\n\n    ```bash\n    cd backend\n    npm run dev\n    ```\n\n    This will start the backend server at ```http://localhost:8000```.\n\n2. **Start the frontend**:\n    Navigate to the ```frontend``` directory and run:\n\n    ```bash   \n    cd frontend\n    npm start\n    ```\n\n    This will start the frontend React application, and you can access it at:\n\n    ```bash\n    http://localhost:3000\n    ```\n\n3. **Filter Tasks with DataGrid**:\n    The app leverages Material-UI's DataGrid component to allow for flexible task filtering. To filter tasks:\n    - Access the DataGrid interface by navigating to the task management page.\n    - Use the column headers to apply filters directly to the task list. For example:\n        - **Completed**: Filtering tasks marked as \"True\" or \"False\".\n        - **Task Name**: Input keywords to locate specific tasks.\n        - **Task Description**: Input keywords to locate specific description.\n    - Adjust filters dynamically to explore your tasks efficiently. \n\n4. **Test the Application**:\n    Navigate to the ```backend``` directory and run:\n\n    ```bash\n    cd backend\n    npm test\n    npm run test:watch\n    npm run test:coverage\n    npm run test:controllers\n    npm run test:services\n\n\n    This will start the test  backend server. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filertha%2Fhiring-todolist-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filertha%2Fhiring-todolist-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filertha%2Fhiring-todolist-app/lists"}