{"id":19213597,"url":"https://github.com/p4ul-m/image-classificator","last_synced_at":"2026-04-10T01:57:32.928Z","repository":{"id":261295170,"uuid":"874434821","full_name":"P4UL-M/image-classificator","owner":"P4UL-M","description":"Image Classificator is a web application that allows users to upload images and classify them using pre-trained models. All services are totally independant and can run on different place.","archived":false,"fork":false,"pushed_at":"2024-12-09T00:42:59.000Z","size":3900,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-23T08:17:12.987Z","etag":null,"topics":["express","grpc","image-classification","keras","machine-learning","python","react","tensorflow"],"latest_commit_sha":null,"homepage":"https://p4ul-m.github.io/image-classificator/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/P4UL-M.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-10-17T20:24:23.000Z","updated_at":"2024-12-09T00:43:03.000Z","dependencies_parsed_at":"2024-12-09T01:31:05.058Z","dependency_job_id":null,"html_url":"https://github.com/P4UL-M/image-classificator","commit_stats":null,"previous_names":["p4ul-m/image-classificator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P4UL-M%2Fimage-classificator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P4UL-M%2Fimage-classificator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P4UL-M%2Fimage-classificator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P4UL-M%2Fimage-classificator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/P4UL-M","download_url":"https://codeload.github.com/P4UL-M/image-classificator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240286518,"owners_count":19777353,"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":["express","grpc","image-classification","keras","machine-learning","python","react","tensorflow"],"created_at":"2024-11-09T14:06:34.005Z","updated_at":"2026-04-10T01:57:32.876Z","avatar_url":"https://github.com/P4UL-M.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Image Classificator\n\n## Description\nImage Classificator is a web application that allows users to upload images and classify them using pre-trained models. The application consists of three main components: an API, a server, and a client. The API is built using Node.js and Express, the server is built using Python and gRPC, and the client is built using React and Vite.\n\n## Concept\nThe idea behind the application is to create a web-application to classify image were the web server is separated from the image classification server. This separation allows the web server to be lightweight and handle multiple requests without being overloaded. The image classification server on the other hand can be optimized for image processing and classification.\n\n## Project Structure\n```\n.\n├── Api\n│   ├── config\n│   ├── migrations\n│   ├── models\n│   ├── protos\n│   ├── public\n│   │   └── images\n│   ├── seeders\n│   └── src\n│       ├── __tests__\n│       ├── middlewares\n│       ├── routes\n│       ├── services\n│       └── utils\n├── Server\n│   ├── data\n│   │   ├── images\n│   │   └── models\n│   ├── proto\n│   └── src\n│       ├── generated\n│       └── service\n├── Client\n│   ├── public\n│   └── src\n│       ├── assets\n│       ├── components\n│       │   └── Header\n│       ├── layout\n│       ├── pages\n│       ├── providers\n│       └── store\n├── docker-compose.yml\n└── README.md\n```\n\n## Usage\n\n### Features\n- **API**:\n    The API is built using Node.js and Express. It operates as a RESTful API to handle everything related to the application's data. It uses PostgreSQL as the database and Sequelize as the ORM to store the users' data. The API also uses JWT for authentication and authorization.\n    When a user uploads an image, the API sends the image to the server using gRPC. The server then classifies the image and sends the result back to the API which transmits it to the client.\n\n- **Server**:\n    The server is built using Python and gRPC. It uses pre-trained models to classify the images. The server receives the image from the API, processes it, and sends the result back to the API. Every file uploaded to the server are stored for future use and the associated request and response are saved in MongoDB.\n\n- **Client**:\n    The client is built using React and Vite. It allows users to upload images and view the classification results. The client also allows users to choose the model to use for classification and download preview images.\n\n### Prerequisites\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n- [Node.js](https://nodejs.org/en/download/)\n- [npm](https://www.npmjs.com/get-npm)\n- [Python](https://www.python.org/downloads/)\n- [pip](https://pip.pypa.io/en/stable/installation/)\n\n### Installation and Setup with Docker\n1. Clone the repository.\n2. Run the following command to start the application:\n```bash\ndocker-compose --profile tools up\n```\n1. Access the application at `http://localhost/image-classificator/`.\n2. Access the API documentation at `http://localhost:3000/api-docs`. \n\nTo run the application without running the migrations again, use the following command:\n```bash\ndocker-compose up\n```\n\n### Installation and Setup without Docker\n1. Clone the repository.\n2. Install PostgreSQL and create a database.\n3. Create a `.env` file in the `Api` directory and add the following environment variables:\n    ```bash\n    DEV_DB_USERNAME=your_username\n    DEV_DB_PASSWORD=your_password\n    DEV_DB_NAME=your_database_name\n    DEV_DB_HOST=localhost\n    JWT_SECRET=secret\n    GRPC_HOST=localhost\n    GRPC_PORT=9090\n    ```\n4. Create a `.env` file in the `Client` directory and add the following environment variables:\n    ```bash\n    VITE_API_URL=http://localhost:3000\n    ```\n5. Install the dependencies for the API:\n    ```bash\n    cd Api\n    npm install\n    ```\n6. Run the migrations:\n    ```bash\n    npm run init\n    ```\n7. Install the dependencies for the Server:\n    ```bash\n    cd Server\n    pip install -r requirements.txt\n    ```\n8. Generate the gRPC files (optional):\n    ```bash\n    bash generate.sh\n    ```\n9. Install the dependencies for the Client:\n    ```bash\n    cd Client\n    npm install\n    ```\n10. Start the Server:\n    ```bash\n    cd Server\n    python src/main.py\n    ```\n11. Start the API:\n    ```bash\n    cd Api\n    npm run start:dev\n    ```\n12. Start the Client:\n    ```bash\n    cd Client\n    npm run dev\n    ```\n13. Access the application at `http://localhost/image-classificator/`.\n14. Access the API documentation at `http://localhost:3000/api-docs`.\n\n### Testing\nTo run the tests for the API, use the following command:\n```bash\ncd Api\nnpm run test\n```\n\n### Documentation\nThe API documentation is available at `http://localhost:3000/api-docs`. A live instance of the documentation is available on [GitHub Pages](https://p4ul-m.github.io/image-classificator/).\n\n## Contribution\nLes contributions sont les bienvenues ! Veuillez suivre les étapes ci-dessous pour contribuer :\n1. Forkez le dépôt.\n2. Créez une branche pour votre fonctionnalité (`git checkout -b ma-fonctionnalité`).\n3. Commitez vos modifications (`git commit -am 'Ajoutez une nouvelle fonctionnalité'`).\n4. Poussez votre branche (`git push origin ma-fonctionnalité`).\n5. Ouvrez une Pull Request.\n\n## Licence\nCe projet est sous licence Apache 2.0. Voir le fichier [LICENSE](LICENSE) pour plus d'informations.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp4ul-m%2Fimage-classificator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp4ul-m%2Fimage-classificator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp4ul-m%2Fimage-classificator/lists"}