QuickBid is a comprehensive Full-Stack Auction Management System developed as part of the Enterprise Application Development II (EAD 2) module. It provides a robust platform for creating, managing, and participating in online auctions with real-time bidding capabilities.
- Overview
- Features
- Tech Stack
- Architecture
- Project Structure
- Getting Started
- API Documentation
- Usage
- Screenshots
- Testing
- Deployment
- Contributing
- License
- Contact
QuickBid is designed to streamline the auction process by providing a secure, user-friendly platform where users can:
- List items for auction with detailed descriptions and images
- Place competitive bids on active auctions
- Track current highest bids in real-time
- Manage auction inventory with full CRUD operations
- Authenticate securely with session management
- View auction history and transaction records
The application follows enterprise-level design patterns with a scalable Spring Boot backend and a responsive, modern frontend interface.
- ✅ User registration and authentication
- ✅ Role-based access control (Admin/User)
- ✅ Profile management
- ✅ Session management with security
- ✅ Create new auctions with details
- ✅ Edit and delete auctions (owner only)
- ✅ Set starting price and auction duration
- ✅ Upload item images
- ✅ Auction status tracking (Active/Closed)
- ✅ Real-time bid placement
- ✅ Automatic highest bid tracking
- ✅ Bid validation (minimum increment)
- ✅ Bid history for each auction
- ✅ Notification system for outbid users
- ✅ Search and filter auctions
- ✅ Responsive design for mobile/desktop
- ✅ RESTful API architecture
- ✅ Input validation and error handling
- ✅ Transaction logging
- Spring Boot - Backend framework
- Spring MVC - Web framework
- Spring Data JPA - Data access layer
- Hibernate - ORM for database mapping
- MySQL - Relational database
- Spring Security - Authentication & authorization
- Maven - Dependency management
- HTML5 - Markup
- CSS3 - Styling
- JavaScript - Client-side logic
- Bootstrap (optional) - UI framework
- Thymeleaf - Template engine
┌─────────────────┐
│ Frontend UI │
│ (HTML/CSS/JS) │
└────────┬────────┘
│
↓
┌─────────────────┐
│ Controllers │
│ (REST/MVC) │
└────────┬────────┘
│
↓
┌─────────────────┐
│ Services │
│ (Business Logic)│
└────────┬────────┘
│
↓
┌─────────────────┐
│ Repositories │
│ (Data Access) │
└────────┬────────┘
│
↓
┌─────────────────┐
│ MySQL DB │
│ (Persistence) │
└─────────────────┘
QuickBid/
├── src/
│ ├── main/
│ │ ├── java/com/quickbid/
│ │ │ ├── controller/ # REST & Web controllers
│ │ │ │ ├── AuctionController.java
│ │ │ │ ├── BidController.java
│ │ │ │ └── UserController.java
│ │ │ ├── service/ # Business logic layer
│ │ │ │ ├── AuctionService.java
│ │ │ │ ├── BidService.java
│ │ │ │ └── UserService.java
│ │ │ ├── repository/ # Data access layer
│ │ │ │ ├── AuctionRepository.java
│ │ │ │ ├── BidRepository.java
│ │ │ │ └── UserRepository.java
│ │ │ ├── model/ # Entity classes
│ │ │ │ ├── Auction.java
│ │ │ │ ├── Bid.java
│ │ │ │ └── User.java
│ │ │ ├── dto/ # Data Transfer Objects
│ │ │ ├── config/ # Configuration classes
│ │ │ ├── security/ # Security configurations
│ │ │ └── QuickBidApplication.java
│ │ └── resources/
│ │ ├── static/ # CSS, JS, images
│ │ │ ├── css/
│ │ │ ├── js/
│ │ │ └── images/
│ │ ├── templates/ # HTML templates
│ │ │ ├── index.html
│ │ │ ├── auction-list.html
│ │ │ ├── auction-detail.html
│ │ │ └── user-profile.html
│ │ └── application.properties
│ └── test/
│ └── java/ # Unit & Integration tests
├── .mvn/ # Maven wrapper
├── .gitignore
├── pom.xml # Maven configuration
├── mvnw # Maven wrapper script
├── mvnw.cmd # Maven wrapper (Windows)
└── README.md
Ensure you have the following installed:
- Java 17+ - Download
- Maven 3.6+ - Download
- MySQL 8.0+ - Download
- Git - Download
- IDE - IntelliJ IDEA, Eclipse, or VS Code (optional)
- Clone the repository
git clone https://github.com/mohamedshiras/QuickBid.git
cd QuickBid- Create MySQL Database
CREATE DATABASE quickbid_db;- Configure Database Connection
Edit src/main/resources/application.properties:
# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/quickbid_db
spring.datasource.username=your_mysql_username
spring.datasource.password=your_mysql_password
# Hibernate Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
# Server Configuration
server.port=8080
# File Upload Configuration
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB- Build the Project
./mvnw clean installOr on Windows:
mvnw.cmd clean installMethod 1: Using Maven
./mvnw spring-boot:runMethod 2: Using JAR file
java -jar target/quickbid-0.0.1-SNAPSHOT.jarMethod 3: Using IDE
Run the QuickBidApplication.java main class from your IDE.
The application will start on http://localhost:8080
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
User login |
| POST | /api/auth/logout |
User logout |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/auctions |
Get all auctions |
| GET | /api/auctions/{id} |
Get auction by ID |
| POST | /api/auctions |
Create new auction |
| PUT | /api/auctions/{id} |
Update auction |
| DELETE | /api/auctions/{id} |
Delete auction |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/bids/auction/{auctionId} |
Get bids for auction |
| POST | /api/bids |
Place a bid |
| GET | /api/bids/user/{userId} |
Get user's bids |
Create Auction
curl -X POST http://localhost:8080/api/auctions \
-H "Content-Type: application/json" \
-d '{
"title": "Vintage Camera",
"description": "Classic 1960s camera in excellent condition",
"startingPrice": 150.00,
"endTime": "2026-02-01T18:00:00"
}'- Register/Login - Create an account or login with existing credentials
- Browse Auctions - View all active auctions on the homepage
- View Details - Click on an auction to see full details and bid history
- Place Bid - Enter your bid amount (must be higher than current highest bid)
- Create Auction - List your own items for auction
- Monitor - Track your bids and auctions from your profile
./mvnw test./mvnw verify./mvnw jacoco:reportView coverage report at target/site/jacoco/index.html
- Install Heroku CLI
- Create Heroku app
heroku create quickbid-app- Add MySQL addon
heroku addons:create jawsdb:kitefin- Deploy
git push heroku masterFROM openjdk:17-jdk-slim
COPY target/quickbid-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]Build and run:
docker build -t quickbid .
docker run -p 8080:8080 quickbidContributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for full license details.
- Mohamed Shiras - Project Lead & Developer
- Nimesh Kolambage - Developer
- Diran Dilshan - Developer
- Thaweesha Perera - Developer
Mohamed Shiras
- GitHub: @mohamedshiras
- Project Link: https://github.com/mohamedshiras/QuickBid
- Developed as part of EAD 2 (Enterprise Application Development II) module
- Spring Boot Documentation
- MySQL Documentation
- Bootstrap for UI components
- All contributors and supporters
- Email notifications for bid updates
- Payment integration
- Advanced search filters
- Mobile app (Android/iOS)
- Admin dashboard with analytics
- Auction recommendations based on user interest
- WebSocket for real-time bid updates
⭐ If you find this project useful, please consider giving it a star! ⭐
Made with ❤️ by Mohamed Shiras