An Airbnb clone.
hbnb is a complete full-stack web application, integrating a MySQL database and Flask RESTful API with a dynamic HTML5/CSS3/jQuery front-end.
hbnb was the central web application of the ALX School year one curriculum. The project spanned the course of two months and four versions, each of which you can view at the below links:
The versions listed above are distinct codebases. While the initial version was created from scratch, versions 2, 3, and 4 entailed inheriting and expanding on repositories established by earlier ALX School cohorts. Furthermore, for each iteration, I collaborated and pair programmed with a cohort mate - I worked with a different cohort mate for each version.
This versioning approach provided invaluable practice in pair programming and working on unfamiliar, developed codebases. However, it was not ideal from a portfolio perspective, as it lacked a central, organized repository where I could showcase all of the work I coded and learnt during the course of this clone.
This repository is simply the above - an organized, cleaned-up version of hbnb. Call it a minified build if you like.
This repository began as a duplicate of AirBnB_clone_v4, the final version worked on as part of ALX's curriculum. Since then, I've done the following:
- Remove any unnecessary code, leaving only what is required to deliver the program.
- Put together the front-end, back-end, and API strictly using my code, copying in the personal implementations of each that I worked on across all four versions.
- Improved the front-end and developed new Puppet and Fabric auto-deployment scripts.
- Wrote detailed, well-organized documentation for all aspects of the repository.
-
Models class system built in Python.
-
Python console to manage back-end models
-
Flask web application server rendering HTML templates with Jinja2
-
RESTful Flask API
-
Automatic deployment scripts.
Regretfully, the test suite proved to be too extensive to reasonably refactor for this minified repository and did not withstand the demands of four distinct codebases. Which is unfortunate because a large portion of the project's development time was devoted to creating a unittest test suite that tested the entire back end.If you're interested in looking at tests I was involved in writing, my most signficant test work occurred in AirBnB_clone.
Tool/Library | Version |
---|---|
Python | ^3.6.4 |
MySQL | ^5.6.0 |
Flask | ^1.0.3 |
flasgger | ^0.9.2 |
Flask-Cors | ^3.0.8 |
mysqlclient | ^1.3.10 |
SQLAlchemy | ^1.3.5 |
View the complete list of app dependencies in the requirements.txt.
Deployment:
Tool/Library | Version |
---|---|
Python | ^3.7.3 |
gunicorn | ^19.9.0 |
Fabric | ^2.4.0 |
Puppet | ^5.4.0 |
In case you missed it - I've documented this entire repository! Please do check it out!
- Karanja J Njuguna - <kei-en>
This project is licensed under the MIT License - see the LICENSE file for details.