This project is an image data processing and visualization application that consists of a backend and a frontend. The backend is responsible for handling CSV file uploads, resizing images, storing them in a database, and providing an API to retrieve image frames based on depth range. The frontend provides a user interface to upload CSV files and view the processed image frames.
The project is organized into the following directories:
backend/
: Contains the backend application code and Dockerfile.frontend/
: Contains the frontend application code and Dockerfile.docker-compose.yml
: Defines the services and their configurations for running the application using Docker Compose.
To run the application, make sure you have Docker and Docker Compose installed on your machine. Then, follow these steps:
-
Clone the repository:
git clone https://github.com/dPacc/image-challenge.git cd image-challenge
-
Start the application using Docker Compose:
docker-compose up --build
This command will build the Docker images for the backend and frontend, and start the necessary containers.
-
Access the application:
- Frontend: Open your web browser and visit
http://localhost:3002
to access the frontend interface. - Backend API: The backend API is accessible at
http://localhost:8002
. - Adminer (Database Management): You can access Adminer at
http://localhost:8082
to manage the PostgreSQL database.
- Frontend: Open your web browser and visit
The application follows a client-server architecture, with the frontend communicating with the backend API to upload CSV files and retrieve processed image frames.
- Backend:
- The backend is built using Python and utilizes the Flask web framework.
- It provides endpoints for uploading CSV files and retrieving image frames based on depth range.
- The uploaded CSV data is processed, resized, and stored in a PostgreSQL database.
- The backend applies a custom color map to the image frames before sending them to the frontend.
- Frontend:
- The frontend is built using React and utilizes Ant Design components for the user interface.
- It provides a user-friendly interface to upload CSV files and view the processed image frames.
- The frontend communicates with the backend API to send CSV files and retrieve image frames.
- Database:
- The application uses a PostgreSQL database to store the image data.
- The database is managed using the SQLAlchemy ORM in the backend.
- Containerization:
- The backend and frontend are containerized using Docker.
- Docker Compose is used to define and run the multi-container application.