![](https://raw.githubusercontent.com/gardensgreen/castaway/main/./readme_images/CastawayLogo.png)
Castaway is a simple yet powerful boat rental platform that allows users to find boat listings near them to rent for a certain number of days. It leverages Google's Locational Services and APIs to power search and maps.
Here is a working live demo: Demo
- Flask
- SQLAlchemy
- WTForms
- Flask Login
- Flask JWT
- Werkzeug
- Psycopg2
- React
- Material UI
- Styled Components
- Moment
- Google Maps React
- Use Places Autocomplete
- React Particles
- React Spring
- HTTP Proxy Middleware
Castaway's backend was built using Flask for Python. The server has a RESTful API layer for all CRUD actions. It is connected to a PostgreSQL database which leverages the SQLAlchemy ORM for information retrieval and data manipulation. The frontend was built using React and Hooks, and uses built-in context for client storage and global state management. All ougoing client requests are proxied to Flask server.
- Authentication
- Boat Listings with Map
- Reservations
- Location Search
- Likes
- Host Dashboard
- Reviews
- Availability check for reservations
- Boat Retrieval Algorithm
- Messaging
![](https://raw.githubusercontent.com/gardensgreen/castaway/main/./readme_images/database_schema.png)
Endpoint |
HTTP Verb |
Description |
/api/auth |
GET |
Authenticate User |
/api/auth/login |
POST |
Logs a user In |
/api/auth/logout |
GET |
Logs a user out |
/api/auth/signup |
POST |
Creates a new user and logs them in |
/api/auth/unauthorized |
GET |
Returns unauthorized JSON when failed auth |
Endpoint |
HTTP Verb |
Description |
/api/users/:id |
GET |
Gets single user |
/api/users/:id/reservations |
GET |
Gets all reservations for single user |
Endpoint |
HTTP Verb |
Description |
/api/boats |
GET |
Gets all boats |
/api/boats/:id |
GET |
Gets single boat |
/api/boats/:id |
POST |
Create single boat |
/api/boats/:id |
PATCH |
Edit a single boat |
/api/boats/:id |
DELETE |
Delete a single boat |
/api/boats/:id/reservations |
POST |
Creates Reservation for Boat |
Endpoint |
HTTP Verb |
Description |
/api/reservations/:id |
DELETE |
Delete reservation |