Skip to content

nchernys/art-lover-app

Repository files navigation

AMARTE: Enjoy & Share Art (in progress)

Amarte is a full-stack social platform for discovering, understanding, and sharing artworks. Powered by Gemini’s image recognition and AI generation, it identifies artworks from images or keywords and provides clear insights into artistic movements, historical context, and significance. Build your personal Gallery, explore artworks shared by others in the Feed, and engage with an AI chatbot designed as an art historian for deeper, contextual exploration.

Key Features

  • Personal gallery to save and organize artworks
  • Explore a community feed of shared artworks
  • Bookmark artworks for quick access
  • Identify artworks from images or keywords using AI
  • Generate structured descriptions (style, movement, context, significance)
  • AI chatbot with RAG for deeper art history insights

Tech Stack

  • Frontend: React.js (TypeScript)
  • Backend: Java, Spring Boot
  • AI Services: Gemini (AI description and image recognition)
  • Database: MongoDB Atlas with Vector Search
  • Cloud Storage: Cloudflare R2
  • External APIs: The MET Museum API, Rijksmuseum API, Smithsonian Museum API, Europeana API, and Wikimedia Commons API
  • Testing: Playwright (E2E), JUnit5 (Spring Boot endpoints)
  • Deployment: AWS EC2 (Java Spring Boot backend), Amazon S3 + Cloudfront (React frontend)

How to run

  • Environment: Configure variables using backend/application-example.properties as a reference
  • Frontend: npm install & npm run dev
  • Backend: mvn install & mvn spring-boot:run

Live Demo

The application is deployed on AWS but the instance is currently paused for cost reasons.
I am happy to spin it up on request.


API Endpoints

Authentication

Method Endpoint Description
POST /api/auth/signup Create a new user account
POST /api/auth/login Login and receive JWT cookie
POST /api/auth/logout Logout and clear JWT cookie
GET /api/auth/me Get current authenticated user ID

Gallery

Method Endpoint Description
POST /api/save Add a new artwork (multipart form, optional image)
GET /api/show Get all artworks for authenticated user
GET /api/show/{id} Get a single artwork by ID
PATCH /api/update/{id} Update artwork details and image
DELETE /api/delete/{id} Delete an artwork

Feed

Method Endpoint Description
GET /api/posts Get all Feed posts
POST /api/posts/{id} Save a new Feed post
DELETE /api/posts/delete/{id} Delete a post

Bookmark

Method Endpoint Description
GET /api/bookmarks Get all bookmarks
POST /api/bookmarks/{id} Add or remove a bookmark from a gallery or feed item

Artists

Method Endpoint Description
GET /api/artists Get all artists

Chatbot

Method Endpoint Description
GET /api/chat/messages Get all chat messages per user
POST /api/chat/save Add a new message to a chat conversation

Search and AI

Method Endpoint Description
GET /api/generate-description?userPrompt= Generate AI artwork description
POST /api/recognize Recognize artwork from uploaded image
POST /api/recognize-keywords Recognize artwork from user keywords

Screenshots

Artwork Recognition

Gallery View

Details View & AI Chatbot

Feed & Comments

About

AMARTE: An AI-powered art discovery & social platform that lets users identify artworks via image upload or search and instantly explore artists, movements, and historical context. Built with a Spring Boot backend, JWT authentication, and Gemini AI, featuring artwork saving, bookmarks, and personalized galleries.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors