This project demonstrates implemention a web-based auction information system that automates the creation and management of auctions, lots, bids, and user roles. The system follows a three-tier architecture and uses the MVC pattern to ensure clear separation of concerns.
- Role-based access: Participant, Recruiter, Administrator
- User registration and authentication
- Auction creation and editing
- Lot management with category assignment
- Bidding with automatic validation and balance checks
- Winner selection
- Role-specific user interface views
- Triggers and functions to enforce business rules
- Java (Spring Boot)
- JavaScript (React)
- SQL (PostgreSQL)
Expand
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| username | VARCHAR(30) | NOT NULL, UNIQUE |
| first_name | VARCHAR(50) | NOT NULL |
| last_name | VARCHAR(50) | NOT NULL |
| balance | DOUBLE PRECISION | DEFAULT 0 |
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| title | VARCHAR(255) | NOT NULL |
| description | VARCHAR(100) |
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| admin_id | INTEGER | NOT NULL, FOREIGN KEY → user(id) |
| title | VARCHAR(100) | NOT NULL |
| description | VARCHAR(255) | |
| start_date | TIMESTAMP WITH TIME ZONE | NOT NULL, DEFAULT CURRENT_TIMESTAMP |
| end_date | TIMESTAMP WITH TIME ZONE |
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| auction_id | INTEGER | NOT NULL, FOREIGN KEY → auction(id) |
| category_id | INTEGER | NOT NULL, FOREIGN KEY → category(id) |
| amount | DOUBLE PRECISION | DEFAULT 0 |
| title | VARCHAR(100) | NOT NULL |
| description | VARCHAR(255) |
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| lot_id | INTEGER | NOT NULL, FOREIGN KEY → lot(id) |
| user_id | INTEGER | NOT NULL, FOREIGN KEY → user(id) |
| description | VARCHAR(255) | NOT NULL |
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| lot_id | INTEGER | NOT NULL, FOREIGN KEY → lot(id) |
| user_id | INTEGER | NOT NULL, FOREIGN KEY → user(id) |
| amount | DOUBLE PRECISION | NOT NULL |
| bid_date | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP |
| Column | Type | Constraints |
|---|---|---|
| id | SERIAL | PRIMARY KEY |
| lot_id | INTEGER | NOT NULL, FOREIGN KEY → lot(id) |
| user_id | INTEGER | NOT NULL, FOREIGN KEY → user(id) |
| amount | DOUBLE PRECISION | NOT NULL |
- Make sure Docker and Docker Compose are installed.
- Create a
.envfile in the root directory based on the provided.env.sample. - Run the application using Docker Compose:
docker-compose up --buildThe system will be available at:
- Database: http://localhost:5432
- Backend: http://localhost:8080
- Frontend: http://localhost:3000
Install PostgreSQL and create a new database (e.g., auction) Execute all SQL files in the init-scripts folder to set up schema, triggers, and roles.
Go to the backend directory. Create a .env file based on .env.sample. Run the Spring Boot app:
./mvnw spring-boot:runNavigate to the frontend directory. Create a .env file based on .env.sample. Install dependencies and start the React app:
npm install
npm start
- Access
- Database: http://localhost:5432
- Backend: http://localhost:8080
- Frontend: http://localhost:3000



