豆豆友情提示:这是一个非官方 GitHub 代理镜像,主要用于网络测试或访问加速。请勿在此进行登录、注册或处理任何敏感信息。进行这些操作请务必访问官方网站 github.com。 Raw 内容也通过此代理提供。
Skip to content

MohamedShiras/QuickBid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏷️ QuickBid - Auction Management System

Status Spring Boot Java Frontend License-MIT

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.


📋 Table of Contents


🧠 Overview

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.


✨ Features

User Management

  • ✅ User registration and authentication
  • ✅ Role-based access control (Admin/User)
  • ✅ Profile management
  • ✅ Session management with security

Auction Management

  • ✅ 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)

Bidding System

  • ✅ Real-time bid placement
  • ✅ Automatic highest bid tracking
  • ✅ Bid validation (minimum increment)
  • ✅ Bid history for each auction
  • ✅ Notification system for outbid users

Additional Features

  • ✅ Search and filter auctions
  • ✅ Responsive design for mobile/desktop
  • ✅ RESTful API architecture
  • ✅ Input validation and error handling
  • ✅ Transaction logging

🛠️ Tech Stack

Backend

Spring Boot Hibernate MySQL Maven

  • 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

Frontend

HTML5 CSS3 JavaScript

  • HTML5 - Markup
  • CSS3 - Styling
  • JavaScript - Client-side logic
  • Bootstrap (optional) - UI framework
  • Thymeleaf - Template engine

🏗️ Architecture

┌─────────────────┐
│   Frontend UI   │
│  (HTML/CSS/JS)  │
└────────┬────────┘
         │
         ↓
┌─────────────────┐
│   Controllers   │
│   (REST/MVC)    │
└────────┬────────┘
         │
         ↓
┌─────────────────┐
│    Services     │
│ (Business Logic)│
└────────┬────────┘
         │
         ↓
┌─────────────────┐
│  Repositories   │
│  (Data Access)  │
└────────┬────────┘
         │
         ↓
┌─────────────────┐
│   MySQL DB      │
│   (Persistence) │
└─────────────────┘

📁 Project Structure

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

🚀 Getting Started

Prerequisites

Ensure you have the following installed:

Installation

  1. Clone the repository
git clone https://github.com/mohamedshiras/QuickBid.git
cd QuickBid
  1. Create MySQL Database
CREATE DATABASE quickbid_db;
  1. 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
  1. Build the Project
./mvnw clean install

Or on Windows:

mvnw.cmd clean install

Running the Application

Method 1: Using Maven

./mvnw spring-boot:run

Method 2: Using JAR file

java -jar target/quickbid-0.0.1-SNAPSHOT.jar

Method 3: Using IDE

Run the QuickBidApplication.java main class from your IDE.

The application will start on http://localhost:8080


📡 API Documentation

Authentication Endpoints

Method Endpoint Description
POST /api/auth/register Register new user
POST /api/auth/login User login
POST /api/auth/logout User logout

Auction Endpoints

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

Bid Endpoints

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

Example Request

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"
  }'

💡 Usage

  1. Register/Login - Create an account or login with existing credentials
  2. Browse Auctions - View all active auctions on the homepage
  3. View Details - Click on an auction to see full details and bid history
  4. Place Bid - Enter your bid amount (must be higher than current highest bid)
  5. Create Auction - List your own items for auction
  6. Monitor - Track your bids and auctions from your profile

🧪 Testing

Run Unit Tests

./mvnw test

Run Integration Tests

./mvnw verify

Test Coverage

./mvnw jacoco:report

View coverage report at target/site/jacoco/index.html


🌐 Deployment

Deploy to Heroku

  1. Install Heroku CLI
  2. Create Heroku app
heroku create quickbid-app
  1. Add MySQL addon
heroku addons:create jawsdb:kitefin
  1. Deploy
git push heroku master

Deploy with Docker

FROM 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 quickbid

🤝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for full license details.


👥 Contributors


📧 Contact

Mohamed Shiras


🙏 Acknowledgments

  • Developed as part of EAD 2 (Enterprise Application Development II) module
  • Spring Boot Documentation
  • MySQL Documentation
  • Bootstrap for UI components
  • All contributors and supporters

🗺️ Roadmap

  • 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

About

QuickBid is a web-based auction and bidding platform designed for fast, transparent, and user-friendly online auctions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors