PAINT is a full-stack web application designed to serve as a virtual art gallery platform. The system facilitates interaction between various user types (artists, galleries, regular users) who can create profiles, showcase artwork, purchase pieces, and commission new works. Art galleries can invite artists and showcase events, fostering a vibrant online art community.
The application is built on a robust back-end database structure ("ArtBase") developed during the Foundations of Databases course, providing a solid foundation for the web application's functionality.
-
User Authentication & Profiles
- Secure login and registration system
- Different user roles (artist, art gallery, generic user, business user)
- Customizable user profiles with profile pictures
-
Art Content Management
- Artists can upload and showcase artwork with detailed information
- Support for multiple images per art piece
- Tagging system for categorization of art
-
Social Interaction
- Follow system for users to track favorite artists and galleries
- Rating and review system for art pieces and events
- Content recommendation engine
-
E-commerce Capabilities
- Art piece advertisements with pricing
- Order management system
- Shipping and delivery tracking
-
Event Management
- Art galleries can create and promote events
- Artists can participate in events
- Event review system
- Back-end: Java with Jakarta EE
- Database: PostgreSQL
- Logging: Log4j 2
- Authentication: Custom token-based authentication
- Build Tool: Maven
- Web Server: Apache Tomcat
- Frontend: JSP, HTML, CSS, JavaScript
- Input Validation: Custom validation framework
The application follows the Model-View-Controller (MVC) architecture:
src/main/java/it/unipd/dei/webapp/resource/: Model classes representing domain entitiessrc/main/java/it/unipd/dei/webapp/dao/: Data Access Objects for database operationssrc/main/java/it/unipd/dei/webapp/servlet/: Controllers handling HTTP requestssrc/main/java/it/unipd/dei/webapp/filter/: HTTP filters for request handling and authorizationsrc/main/java/it/unipd/dei/webapp/util/: Utility classes for common operationssrc/main/java/it/unipd/dei/webapp/validation/: Input validation frameworksrc/main/webapp/jsp/: JSP views for rendering HTMLsrc/main/webapp/html/: Static HTML pagessrc/main/webapp/media/: Media files used in the applicationsrc/main/database/: SQL scripts for database setup
- Java 20 or higher
- PostgreSQL database
- Apache Tomcat 10 or higher
- Maven
- Configure database connection parameters in
src/main/webapp/META-INF/context.xml - Build the project:
mvn clean package - Deploy the generated WAR file to Tomcat
Once deployed, the application can be accessed through a web browser at: http://localhost:8080/PAINT/
Different user types will have access to different functionality:
- Regular users can browse and purchase art
- Artists can upload and showcase their work
- Galleries can organize events and invite artists
- Business users have additional commerce capabilities
API documentation can be generated using:
mvn javadoc:javadoc
After generating the Javadoc, you can access it in two ways:
-
Direct file access: Open the following file in your web browser:
target/site/apidocs/index.htmlor
javadoc/apidocs/index.htmldepending on your Maven configuration.
-
Command line (Windows):
start target\site\apidocs\index.htmlor
start javadoc\apidocs\index.html
The documentation provides comprehensive information about:
- All classes and interfaces
- Methods and their parameters
- Relationships between classes
- Validation framework usage
- DAO pattern implementation
- Servlet lifecycle and request handling
The application includes a custom validation framework in the it.unipd.dei.webapp.validation package. This framework:
- Provides methods for validating various data types
- Uses a fluent interface for building validation rules
- Returns detailed validation messages for invalid input
- Integrates with the model classes via the
Validatableinterface
This project has been developed by:
- Tommaso Leoni
- Matteo Amagliani
- Matteo Peri
- Daniele Francescato
- Nicolo Stefani
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
© 2025 Department of Information Engineering (DEI), University of Padua, Italy