SumFood
SumFood is a web-based food delivery platform designed to connect customers with local restaurants for convenient food ordering and delivery as well as allowing users to help other users by buying them food. The platform will serve three main user types: customers, restaurants, and couriers.
| Path | Description |
|---|---|
src/main/java/com/sumfood/controller/ |
REST API controllers |
src/main/java/com/sumfood/service/ |
Business logic layer |
src/main/java/com/sumfood/model/ |
Entity and DTO classes |
src/main/java/com/sumfood/repository/ |
Spring Data JPA repositories |
src/main/resources/ |
Application config & resources |
application.properties |
Spring Boot configuration |
pom.xml |
Maven project configuration |
| Path | Description |
|---|---|
public/ |
Public static files |
src/components/ |
Reusable UI components |
src/pages/ |
Page-level components |
src/App.js |
Root component |
src/index.js |
Entry point for React app |
package.json |
NPM dependencies & script configuration |
| File/Folder | Description |
|---|---|
docker-compose.yml |
Docker multi-container setup |
.env |
Enviroment variables configuration |
README.md |
Project documentation |
Follow the steps below to run the project locally:
git clone https://gitlab.com/yourusername/sumfood.git
cd sumfoodcp .env .envdocker-compose up --buildFrontend: http://localhost:3000
Backend API: http://localhost:8080
Base URL: http://localhost:8080/
origin/development
POST /api/register/customer| Parametre | Tip | Açıklama |
|---|---|---|
body |
JSON |
customer_data |
Example Data Structure:
{
"email": "testuser3@example.com",
"password": "12345678",
"name": "Test",
"lastName": "User",
"phoneNumber": "5055055556"
}
Response:
{
"id": 17,
"createAt": "2025-04-10T19:42:41.730+00:00",
"password": "$2a$10$4iAID2Mc9fv6CZNr9oT4kefz/CM1XE4RKgxFLGdyApJahtJUqUHtO",
"username": "testuser3@example.com",
"authorities": [
{
"authority": "ROLE_CUSTOMER"
}
],
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true,
"enabled": true
}
POST /api/register/couirer| Parametre | Tip | Açıklama |
|---|---|---|
body |
JSON |
courier_data |
Example Data Structure:
{
"email": "testkurye1@example.com",
"password": "12345678",
"name": "Kurye",
"lastName": "Test Kurye Soyisim",
"phoneNumber": "5055055555",
"driverLicenceId": "123456",
"birthDate": "22-04-2004",
"vehicleType": "BICYCLE"
}
Response:
{
"id": 18,
"createAt": "2025-04-10T19:44:18.523+00:00",
"password": "$2a$10$4bh1NgcJfEHqU/wM7mTLFuCfM87JJNnwYKVVFEkWiJEho2KMFM8OW",
"enabled": false,
"username": "testkurye1@example.com",
"authorities": [
{
"authority": "ROLE_COURIER"
}
],
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true
}
POST /api/register/restaurant| Parametre | Tip | Açıklama |
|---|---|---|
body |
JSON |
restaurant_data |
Example Data Structure:
{
"email": "restaurant@example.com",
"password": "12345678",
"name": "Yusuf",
"lastName": "İpek",
"phoneNumber": "5055555555",
"taxIdentificationNumber": "123456",
"bussinesName": "Five Sum Gıda İşletmeleri LTD ŞTİ",
"displayName": "SumFood by 5Sum",
"description": "Sum Food by FiveSum"
}
Response:
{
"id": 25,
"createAt": "2025-04-10T20:12:05.662+00:00",
"password": "$2a$10$nT9EWTECROpQh6nVipuMpOuiixyNUBmFsD38MyQjtBniP/kqt6Zpa",
"enabled": false,
"username": "restaurant@example.com",
"authorities": [
{
"authority": "ROLE_RESTAURANT"
}
],
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true
}
POST /api/food/itemHeaders:
| Key | Value | Required |
|---|---|---|
Authorization |
Bearer {token} |
Yes |
Role |
RESTAURANT |
Yes |
| Parametre | Tip | Açıklama |
|---|---|---|
body |
JSON |
food_item_data |
Example Data Structure:
{
"name": "test item",
"description": "descccc",
"price": 55.5,
"stock": 5,
"category": "PIZZA"
}
Response:
{
"id": 1,
"name": "test item",
"description": "descccc",
"price": 55.5,
"stock": 5,
"category": "PIZZA"
}
GET /api/restaurant/itemsHeaders:
| Key | Value | Required |
|---|---|---|
Authorization |
Bearer {token} |
Yes |
Role |
RESTAURANT |
Yes |
| Parametre | Tip | Açıklama |
|---|---|---|
body |
JSON |
food_item_data |
Example Data Structure:
{
"name": "test item",
"description": "descccc",
"price": 55.5,
"stock": 5,
"category": "PIZZA"
}
Response:
[
{
"id": 1,
"name": "Margherita Pizza",
"description": "Classic tomato and mozzarella",
"price": 12.99,
"stock": 10,
"category": "PIZZA"
},
{
"id": 2,
"name": "Cheeseburger",
"description": "Beef patty with cheese",
"price": 8.99,
"stock": 15,
"category": "BURGER"
}
]
Show your appreciation to those who have contributed to the project.
| Name | Role | Github | |
|---|---|---|---|
| Yusuf İpek | Project Manager | Yusufpek | in/yusuf-ipek |
| Ümit Sevinçler | Analyst | dnaux | in/umit-sevincler |
| Toprak Güngör | Configuration Manager | Toprak | in/toprak-gungor |
| Kerem Berkehan Pınar | Architect | KeremBerkehan | in/keremberkehanpinar |
| Berke Yusuf Uğurlu | Tester | berkecore | in/berkecore |
For open source projects, say how it is licensed.
Development int progress