A places-to-go app to share pubs, cafés etc.
Prost! aims to store good quality cafés and pubs. Apart from cafés and pubs, sharing any good quality place/activity is more than welcome.
Users can create their accounts and share places with name, category, location, tags and menu URL information. Tags and locations can be used for filtering.
Backend: Node.js, Express, MongoDB, AWS Lambda
Frontend: React, AWS S3
https://api.prost.rocks/auth/register
Example request body:
{
"email": "eleanor@example.com",
"username": "eleanorrigby",
"password": "picks up the rice"
}
Example success response: 201 Created
{
"message": "Register Successful!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImVsZWFub3JyaWdieSIsImlhdCI6MTY3NTIwMTk1MSwiZXhwIjoxNjc1MjA5MTUxfQ.TJAP4Zi8zI7XcPjXIiw6yCK4mpwlh5752GVIje5UpQI"
}
Example fail response: 400 Bad Request
{
"message": "User already exists!"
}
https://api.prost.rocks/auth/login
Example request body:
{
"username": "eleanorrigby",
"password": "picks up the rice"
}
Example success response: 200 OK
{
"message": "Login Successful!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImVsZWFub3JyaWdieSIsInBhc3N3b3JkIjoiJDJiJDEwJDMwLmJ1Rk9nLzRtOUdhZjExdkNZcS5UQkthaGN1bDJBWllKRi45Ny9aanNMVmhHVUZCdWVtIiwiaWF0IjoxNjc1MjAyMjkwLCJleHAiOjE2NzUyMDk0OTB9.lHp4buGoAXkTD9shyi1ICQ6hApFFsVyxNLq-136qulY"
}
Example fail response: 401 Unauthorized
{
"message": "Username or password is incorrect!"
}
https://api.prost.rocks/auth/register
Example request header:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImVsZWFub3JyaWdieSIsInBhc3N3b3JkIjoiJDJiJDEwJDMwLmJ1Rk9nLzRtOUdhZjExdkNZcS5UQkthaGN1bDJBWllKRi45Ny9aanNMVmhHVUZCdWVtIiwiaWF0IjoxNjc1MjAyMjkwLCJleHAiOjE2NzUyMDk0OTB9.lHp4buGoAXkTD9shyi1ICQ6hApFFsVyxNLq-136qulY
Example success response: 200 OK
[
{
"_id": "63d98d9f8ba1be4b0dd7abc5",
"email": "eleanor@example.com",
"username": "eleanorrigby",
"password": "$2b$10$30.buFOg/4m9Gaf11vCYq.TBKahcul2AZYJF.97/ZjsLVhGUFBuem",
"lastLoginDate": "2023-01-31T21:59:41.846Z",
"__v": 0
},
...
Example fail response: 401 Unauthorized
{
"message": "Auth failed"
}
https://api.prost.rocks/places
Example success response: 200 OK
[
{
"_id": "63d1a04181f71a232f954887",
"name": "Bomonti Bira Bahçesi",
"category": "Beer Garden",
"location": "Atakent",
"price": "$$$$$",
"menu": "http://bomontibirabahcesi.com/menu/",
"tags": [
{
"_id": "63d15f497311cc0948d92b54",
"name": "food"
},
{
"_id": "63d1a01d81f71a232f954877",
"name": "alcohol"
},
{
"_id": "63d1a01d81f71a232f954875",
"name": "outdoor"
}
],
"createdBy": {
"_id": "63a1b900e3958cecefc7e3f1",
"username": "to"
},
"createdAt": "2023-01-25T21:33:53.967Z",
"updatedAt": "2023-01-25T21:33:53.967Z",
"__v": 0
},
...
Example fail response: 404 Not Found
{
"message": "No places found!"
}
https://api.prost.rocks/places?user=paulmccartney
Example success response: 200 OK
[
{
"_id": "63fcb62c8293f11bdbb71505",
"name": "Hangout Bahçe",
"category": "Beer Garden",
"location": [
{
"_id": "63fcb62b8293f11bdbb714fb",
"name": "Bornova"
}
],
"price": "$$$",
"menu": "https://www.hangout.com.tr/sayfa/22/menu",
"tags": [
{
"_id": "63fcb62c8293f11bdbb714fe",
"name": "burger"
},
{
"_id": "63fcb62c8293f11bdbb71500",
"name": "hotdog"
},
{
"_id": "63d691e7767f40c04a2c1135",
"name": "pizza"
},
{
"_id": "63d1a01d81f71a232f954877",
"name": "alcohol"
},
{
"_id": "63fcb62c8293f11bdbb71502",
"name": "coffee"
},
{
"_id": "63d1a01d81f71a232f954875",
"name": "outdoor"
}
],
"createdBy": {
"_id": "63fcb5c68293f11bdbb714e5",
"username": "paulmccartney"
},
"createdAt": "2023-02-27T13:54:52.981Z",
"updatedAt": "2023-02-27T13:54:52.981Z",
"__v": 0
},
...
Example fail response: 404 Not Found
{
"message": "No places found!"
}
https://api.prost.rocks/places?tag=taco,burrito
Example success response: 200 OK
[
{
"_id": "63fcc5d48293f11bdbb7163b",
"name": "Zemin",
"category": "Restaurant",
"location": [
{
"_id": "63fcc5d48293f11bdbb71633",
"name": "Bostanlı"
}
],
"price": "$$$$",
"menu": "https://menu.zeminizmir.com/",
"tags": [
{
"_id": "63fcc5d48293f11bdbb71636",
"name": "taco"
},
{
"_id": "63fcc5d48293f11bdbb71638",
"name": "burrito"
},
{
"_id": "63fca68ed9df11bd8987b245",
"name": "indoor"
},
{
"_id": "63d1a01d81f71a232f954875",
"name": "outdoor"
}
],
"createdBy": {
"_id": "63fcb5c68293f11bdbb714e5",
"username": "paulmccartney"
},
"createdAt": "2023-02-27T15:01:40.993Z",
"updatedAt": "2023-02-27T15:01:40.993Z",
"__v": 0
},
...
Example fail response: 404 Not Found
{
"message": "No places found!"
}
https://api.prost.rocks/places
Example request header:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImVsZWFub3JyaWdieSIsInBhc3N3b3JkIjoiJDJiJDEwJDMwLmJ1Rk9nLzRtOUdhZjExdkNZcS5UQkthaGN1bDJBWllKRi45Ny9aanNMVmhHVUZCdWVtIiwiaWF0IjoxNjc1MjAyMjkwLCJleHAiOjE2NzUyMDk0OTB9.lHp4buGoAXkTD9shyi1ICQ6hApFFsVyxNLq-136qulY
Example request body:
{
"name": "Sifon Gastro Pub",
"category": "Gastro Pub",
"location": "Bayraklı",
"menu": "http://buzukimeyhane.com/sifon/",
"price": "$$",
"tags": "food, burger, pizza, alcohol, coffee, outdoor, indoor"
}
Example success response: 201 Created
{
"message": "Created successfully!"
}
Example fail response: 400 Bad Request
{
"message": "Place already exists!"
}
Example fail response: 401 Unauthorized
{
"message": "Auth failed"
}
https://api.prost.rocks/places/63d1a04181f71a232f954887
Example request:
/places/63d1a04181f71a232f954887
Example success response: 200 OK
{
"_id": "63d1a04181f71a232f954887",
"name": "Bomonti Bira Bahçesi",
"category": "Beer Garden",
"location": "Atakent",
"price": "$$$$$",
"menu": "http://bomontibirabahcesi.com/menu/",
"tags": [
"63d15f497311cc0948d92b54",
"63d1a01d81f71a232f954877",
"63d1a04181f71a232f954882",
"63d1a01d81f71a232f954875",
"63d1a04181f71a232f954884"
],
"createdBy": "63a1b900e3958cecefc7e3f1",
"createdAt": "2023-01-25T21:33:53.967Z",
"updatedAt": "2023-01-25T21:33:53.967Z",
"__v": 0
}
Example fail response: 404 Not Found
{
"message": "Not found!"
}
https://api.prost.rocks/places/63d1a04181f71a232f954887
Example request:
/places/63d1a04181f71a232f954887
Example request header:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImVsZWFub3JyaWdieSIsInBhc3N3b3JkIjoiJDJiJDEwJDMwLmJ1Rk9nLzRtOUdhZjExdkNZcS5UQkthaGN1bDJBWllKRi45Ny9aanNMVmhHVUZCdWVtIiwiaWF0IjoxNjc1MjAyMjkwLCJleHAiOjE2NzUyMDk0OTB9.lHp4buGoAXkTD9shyi1ICQ6hApFFsVyxNLq-136qulY
Example success response: 200 OK
{
"message": "Deleted successfully!"
}
Example fail response: 401 Unauthorized
{
"message": "Unauthorized!"
}
https://api.prost.rocks/tags
Example success response: 200 OK
[
{
"_id": "63d1a01d81f71a232f954875",
"name": "outdoor",
"__v": 0
},
{
"_id": "63d1a01d81f71a232f954877",
"name": "alcohol",
"__v": 0
},
{
"_id": "63d691e7767f40c04a2c1135",
"name": "pizza",
"__v": 0
},
...
Example fail response: 404 Not Found
{
"message": "No tags found!"
}
https://api.prost.rocks/locations
Example success response: 200 OK
[
{
"_id": "63fcb62b8293f11bdbb714fb",
"name": "Bornova",
"__v": 0
},
{
"_id": "63fcb6768293f11bdbb71515",
"name": "İnciraltı",
"__v": 0
},
{
"_id": "63fcb6f98293f11bdbb71525",
"name": "Evka 3",
"__v": 0
},
...
Example fail response: 404 Not Found
{
"message": "No locations found!"
}