EdgeDetectr is a full-stack web application for applying image processing operators (Sobel, Prewitt, Roberts, etc.) to uploaded images. The project consists of:
- Frontend: A Next.js application for user interaction.
- Backend: An Express.js server that handles image uploads and processing.
- Operators: A C++ module using OpenCV to apply edge detection operators.
- Deployment:
- Backend: Containerized using Docker and deployed to AWS ECS
- Frontend: Deployed to AWS Amplify
demo.mp4
- Upload an image via the frontend.
- Choose an edge detection operator (Sobel, Prewitt, Roberts, etc.).
- Process the image on the backend using C++ and OpenCV.
- Retrieve and display the processed image.
- Rate limiting to prevent abuse (maximum 1 upload every 30 seconds).
- Fully containerized for easy deployment.
- Docker (for containerization)
- Docker Compose (to manage multi-container applications)
# Clone main repo and submodules
git clone --recurse-submodules https://github.com/your-org/EdgeDetectr-Meta.git
cd EdgeDetectr-Metadocker-compose up --buildThis runs frontend, backend, and operators in separate containers.
POST /operators/:operator
curl -X POST -F "file=@image.jpg" http://localhost:3001/operators/sobelResponse:
{
"status": "success",
"output": "/uploads/output-image.jpg"
}Note: The API is protected by a client-side rate limit that allows only one image upload per 30 seconds.
- Frontend: Next.js, React, Tailwind CSS
- Backend: Node.js, Express.js, Multer (file uploads)
- Image Processing: OpenCV (C++), CMake
- Database: Local storage (future implementation for S3 support)
- Security: Client-side rate limiting for DDoS protection
- Containerization: Docker, Docker Compose
MIT License.
- Kailin Xing - Developer
- Kailin Xing - Maintainer
PRs & Issues are welcome! 🚀