Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alejandroq12/app-to-book-artists
My Artists is a musical venue and artist booking site that facilitates the discovery and bookings of shows between local performing artists and venues. This site lets you list new artists and venues, discover them, and list shows with artists as a venue owner.
https://github.com/alejandroq12/app-to-book-artists
css flask full-stack-web-development html5 javascript orm postgresql python sqlalchemy
Last synced: 2 months ago
JSON representation
My Artists is a musical venue and artist booking site that facilitates the discovery and bookings of shows between local performing artists and venues. This site lets you list new artists and venues, discover them, and list shows with artists as a venue owner.
- Host: GitHub
- URL: https://github.com/alejandroq12/app-to-book-artists
- Owner: Alejandroq12
- License: other
- Created: 2023-01-12T07:46:21.000Z (about 2 years ago)
- Default Branch: dev
- Last Pushed: 2024-01-25T17:48:51.000Z (12 months ago)
- Last Synced: 2024-01-26T03:23:20.043Z (12 months ago)
- Topics: css, flask, full-stack-web-development, html5, javascript, orm, postgresql, python, sqlalchemy
- Language: Python
- Homepage:
- Size: 15.7 MB
- Stars: 16
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
My Artists
# π Table of Contents
- [π Table of Contents](#-table-of-contents)
- [π My Artists ](#-my-artists-)
- [Main Files: Project Structure](#main-files-project-structure)
- [π Built With ](#-built-with-)
- [Tech Stack ](#tech-stack-)
- [Key Features ](#key-features-)
- [π Live Demo ](#-live-demo-)
- [π» Getting Started ](#-getting-started-)
- [Prerequisites](#prerequisites)
- [Setup](#setup)
- [Install](#install)
- [1. Backend dependencies](#1-backend-dependencies)
- [2. Frontend dependencies](#2-frontend-dependencies)
- [Usage](#usage)
- [Deployment](#deployment)
- [π₯ Authors ](#-authors-)
- [π Future Features ](#-future-features-)
- [π€ Contributing ](#-contributing-)
- [βοΈ Show your support ](#οΈ-show-your-support-)
- [π Acknowledgments ](#-acknowledgments-)
- [β FAQ (OPTIONAL) ](#-faq-optional-)
- [π License ](#-license-)My Artists is a musical venue and artist booking site that facilitates the discovery and booking of shows between local performing artists and venues. This site lets you list new artists and venues, discover them, and list shows with artists as venue owners.
My job is to build out the data models to power the API endpoints for this site by connecting to a PostgreSQL database for storing, querying, and creating information about artists and venues on Fyyur.
This is afully functioning site that is at least capable of doing the following, if not more, using a PostgreSQL database:
* creating new venues, artists, and creating new shows.
* searching for venues and artists.
* learning more about a specific artist or venue.I want this to be the next new platform that artists and musical venues can use to find each other, and discover new music shows.
## Main Files: Project Structure
```sh
βββ README.md
βββ app.py *** the main driver of the app. Includes SQLAlchemy models.
"python app.py" to run after installing dependencies
βββ config.py *** Database URLs, CSRF generation, etc
βββ error.log
βββ forms.py *** Forms
βββ requirements.txt *** The dependencies needed to install with "pip3 install -r requirements.txt"
βββ static
βΒ Β βββ css
βΒ Β βββ font
βΒ Β βββ ico
βΒ Β βββ img
βΒ Β βββ js
βββ templates
βββ errors
βββ forms
βββ layouts
βββ pages
```Overall:
* Models are located in the `MODELS` section of `app.py`.
* Controllers are also located in `app.py`.
* The web frontend is located in `templates/`, which builds static assets deployed to the web server at `static/`.
* Web forms for creating data are located in `form.py`Highlight folders:
* `templates/pages` -- (Already complete.) Defines the pages that are rendered to the site. These templates render views based on data passed into the templateβs view, in the controllers defined in `app.py`. These pages successfully represent the data to the user, and are already defined for you.
* `templates/layouts` -- (Already complete.) Defines the layout that a page can be contained in to define footer and header code for a given page.
* `templates/forms` -- (Already complete.) Defines the forms used to create new artists, shows, and venues.
* `app.py` -- (Missing functionality.) Defines routes that match the userβs URL, and controllers which handle data and renders views to the user. This is the main file that I will be working on to connect to and manipulate the database and render views with data to the user, based on the URL.
* Models in `app.py` -- (Missing functionality.) Defines the data models that set up the database tables.
* `config.py` -- (Missing functionality.) Stores configuration variables and instructions, separate from the main application code. This is where I will need to connect to the database.Frontend
Backend
- **virtualenv** as a tool to create isolated Python environments
- **SQLAlchemy ORM** to be the ORM library of choice
- **Python3** as the server language.
- **Flask** as the server framework.
- **Flask-Migrate** for creating and running schema migrations.
Database
- **Post and find venues.**
- **Post a show.**
- **Post and find artists.**
> It will be available soon.
- [Live Demo Link]()
To get a local copy up and running, follow these steps.
### Prerequisites
In order to run this project you need:
Python
```sh
https://www.python.org/downloads/
```
Node.js
```sh
https://nodejs.org/en/download/
```
PostgreSQL
```sh
https://www.postgresql.org/download/windows/
```
### Setup
Clone this repository to your desired folder:
```sh
cd my-folder
git clone https://github.com/Alejandroq12/App-to-book-artists.git
```
### Install
Install all necessary dependencies:
#### 1. Backend dependencies
Download and install the dependencies mentioned above using `pip` as:
```
pip install virtualenv
pip install SQLAlchemy
pip install postgres
pip install Flask
pip install Flask-Migrate
```
#### 2. Frontend dependencies
**HTML**, **CSS**, and **Javascript** with [Bootstrap 5](https://getbootstrap.com/docs/3.4/customize/) for this website's frontend. Bootstrap can only be installed by Node Package Manager (NPM). Therefore, if not already, download and install the [Node.js](https://nodejs.org/en/download/). Windows users must run the executable as an Administrator, and restart the computer after installation. After successfully installing the Node, verify the installation as shown below.
```
node -v
npm -v
```
Install Bootstrap 5
```
npm init -y
npm install bootstrap@5
```
### Usage
1. **Initialize and activate a virtualenv using:**
```
python -m virtualenv env
source env/bin/activate
```
>**Note** - In Windows, the `env` does not have a `bin` directory. Therefore, you'd use the analogous command shown below:
```
source env/Scripts/activate
```
4. **Install the dependencies:**
```
pip install -r requirements.txt
```
5. **Run the development server:**
```
python app.py
```
6. **Verify on the Browser**
Navigate to project homepage [http://127.0.0.1:5000/](http://127.0.0.1:5000/) or [http://localhost:5000](http://localhost:5000)
### Deployment
I will deploy this site soon.
π€ **Julio Quezada**
- GitHub: [Alejandroq12](https://github.com/Alejandroq12)
- Twitter: [@JulioAle54](https://twitter.com/JulioAle54)
- LinkedIn: [Julio Quezada](https://www.linkedin.com/in/quezadajulio/)
- [ ] **I will deploy the database.**
- [ ] **I will deplot the frotend**
- [ ] **I will improve the user interface.**
Contributions, issues, and feature requests are welcome!
Feel free to check the [issues page](../../issues/).
If you like this project please give a star or send me a message with your feedback [email protected]
I would like to thank Udacity because this project was assigned to me in order to develop the entire backend on my own.
- **What did you learned with this project?**
- I learned how to use Python as a server side language and how to set up the database.
This project is [MIT](./LICENSE) licensed.