https://github.com/mrnazu/airbnb_clone
Welcome to the AirBnB clone project!
https://github.com/mrnazu/airbnb_clone
airbnb-clone alx-holberton-software-engineering cmd python
Last synced: about 1 month ago
JSON representation
Welcome to the AirBnB clone project!
- Host: GitHub
- URL: https://github.com/mrnazu/airbnb_clone
- Owner: mrnazu
- Created: 2023-05-09T08:49:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-13T08:30:12.000Z (over 2 years ago)
- Last Synced: 2025-01-18T06:46:59.624Z (9 months ago)
- Topics: airbnb-clone, alx-holberton-software-engineering, cmd, python
- Language: Python
- Homepage:
- Size: 50.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Authors: AUTHORS
Awesome Lists containing this project
README
# Welcome to the AirBnB clone project!

## Project Description
The AirBnB clone project where we will be focusing on building the backend of the application using Python and interfacing it with a console application using the `cmd` module. The goal of the project is to deploy on your server a simple copy of the AirBnB website.## Background Context
First step: Write a command interpreter to manage your AirBnB objects.This is the first step towards building your first full web application: the AirBnB clone. This first step is very important because you will use what you build during this project with all other following projects: `HTML/CSS templating`, `database storage`, `API`, `front-end integration`…
Each task is linked and will help you to:
- put in place a parent class (called BaseModel) to take care of the `initialization`, `serialization` and `deserialization` of your future instances
- create a simple flow of `serialization/deserialization`: Instance <-> Dictionary <-> JSON string <-> file
- create all classes used for AirBnB (`User`, `State`, `City`, `Place`…) that inherit from BaseModel
- create the first abstracted storage engine of the project: File storage.
- create all unittests to validate all our classes and storage engine## What’s a command interpreter?
Do you remember the Shell? It’s exactly the same but limited to a specific use-case. In our case, we want to be able to manage the objects of our project:- Create a new object (ex: a new User or a new Place)
- Retrieve an object from a file, a database etc…
- Do operations on objects (count, compute stats, etc…)
- Update attributes of an object
- Destroy an object## GitHub
**There should be one project repository per group. If you clone/fork/whatever a project repository with the same name before the second deadline, you risk a 0% score.**## Execution
Your shell should work like this in interactive mode:
```
$ ./console.py
(hbnb) helpDocumented commands (type help ):
========================================
EOF help quit(hbnb)
(hbnb)
(hbnb) quit
$
```
But also in non-interactive mode: (like the Shell project in C)
```
$ echo "help" | ./console.py
(hbnb)Documented commands (type help ):
========================================
EOF help quit
(hbnb)
$
$ cat test_help
help
$
$ cat test_help | ./console.py
(hbnb)Documented commands (type help ):
========================================
EOF help quit
(hbnb)
$
```
All tests should also pass in non-interactive mode: $ echo "python3 -m unittest discover tests" | bash
## Final product

## Author
Samuel Amsalu