ArtUnion is a comprehensive ASP.NET Web API platform that connects artists and critics, enabling artists to showcase their work and receive professional feedback from critics.
ArtUnion API serves as the backend for a portfolio and criticism platform that allows:
- ๐จโ๐จ Artists to upload and manage their artwork in personal portfolios
- ๐ง Critics to provide professional feedback and ratings on artworks
- ๐ฅ Users to follow their favorite artists and receive updates
- ๐ฎโโ๏ธ Administrators to manage the platform's content and categories
- Framework: ASP.NET Core (.NET 6+)
- ORM: Entity Framework Core
- Authentication: JWT (JSON Web Tokens)
- Email Service: SMTP integration
- Background Jobs: ๐ Hangfire for automated tasks
- Cloud Services:
- โ๏ธ AWS RDS for database
- ๐ AWS S3 for artwork image storage
- Design Patterns: Repository Pattern
- Tools:
- ๐ AutoMapper for object mapping
- โ FluentValidation for Model validation
- ๐ Pagination for large data sets
- ๐ก๏ธ Proper error handling and logging
- Multiple user roles: Artist, Critic, Admin
- User registration and authentication
- Profile management
- Artists can create and manage portfolios
- Upload artwork with details (title, description, category)
- Organize artwork by categories
- โค๏ธ Like/unlike artwork functionality
- Critics can provide ratings and textual feedback on artwork
- Artists receive notifications about new critiques
- Users can follow artists they like
- Followers receive notifications about new artwork from artists they follow
- Registration confirmation
- New criticism alerts
- New artwork notifications
- Weekly digest of popular works (automated via Hangfire)
- Artwork images stored in AWS S3
- Database hosted on AWS RDS
POST /api/auth/register- Register as Artist or CriticPOST /api/auth/login- Login and receive JWT token
GET /api/users- List all users (Admin only)GET /api/users/{id}- Get specific user informationPUT /api/users/{id}- Update user informationDELETE /api/users/{id}- Delete user (Admin only)
GET /api/portfolios- List all portfoliosGET /api/portfolios/{id}- View specific portfolioPOST /api/portfolios- Create new portfolio (Artist only)PUT /api/portfolios/{id}- Update portfolio (Owner only)DELETE /api/portfolios/{id}- Delete portfolio (Owner/Admin)
GET /api/artworks- List artworks with filteringGET /api/artworks/{id}- View specific artworkPOST /api/artworks- Add new artwork (Artist only)PUT /api/artworks/{id}- Update artwork (Owner only)DELETE /api/artworks/{id}- Delete artwork (Owner/Admin)GET /api/artworks/category/{categoryId}- Get artworks by categoryPOST /api/artworks/{artworkId}/like- Like/unlike an artwork
GET /api/categories- Get all categoriesGET /api/categories/{id}- Get specific categoryPOST /api/categories- Add new category (Admin only)PUT /api/categories/{id}- Update category (Admin only)DELETE /api/categories/{id}- Delete category (Admin only)
GET /api/critiques/artwork/{artworkId}- Get reviews for specific artworkPOST /api/critiques- Add review (Critic only)PUT /api/critiques/{id}- Update review (Owner only)DELETE /api/critiques/{id}- Delete review (Owner/Admin)
GET /api/subscriptions/followers/{artistId}- Get artist's followersGET /api/subscriptions/following- Get artists followed by current userPOST /api/subscriptions/{artistId}- Follow an artistDELETE /api/subscriptions/{artistId}- Unfollow an artist
- User information (name, email, password hash, bio, profile image)
- Role (Artist, Critic, Admin)
- Title
- Description
- Creation date
- Owner (Artist)
- Title
- Description
- Category
- Creation date
- Image URL
- Portfolio reference
- Name
- Description
- Rating
- Comment text
- Creation date
- Critic reference
- Artwork reference
- Follower reference
- Artist reference
- Subscription date
- User reference
- Artwork reference
- Liked timestamp
- API access requires authentication
- Critique creation limited to users with Critic role
- Artwork upload limited to users with Artist role
- Category management limited to users with Admin role
- Content modification restricted to content owners or administrators
- .NET 6 SDK or later
- AWS account with S3 and RDS access
- SMTP server access for email notifications
- Clone the repository:
git clone https://github.com/GeorgeShani/ArtUnion-API.git
- Navigate to the project directory:
cd ArtUnion-API
- Restore NuGet packages:
dotnet restore
-
Create a
.envfile with your environment variables. -
Apply migrations to create the database:
dotnet ef database update
- Run the application:
dotnet run
The application uses environment variables (.env file) for configuration. Key settings include:
- ๐๏ธ Database connection information (AWS RDS)
- ๐ JWT authentication settings
- ๐ง SMTP configuration for email notifications
- ๐ AWS S3 credentials for artwork storage
- ๐ Hangfire configuration for background jobs
The application uses Hangfire to schedule and execute background tasks, including:
- ๐ Weekly digest emails of popular artworks
- ๐ง Automated email notifications
For any questions or suggestions regarding this project, please contact:
- Giorgi Shanidze - GitHub Profile