Giter VIP home page Giter VIP logo

clubwebsite's Introduction

clubWebsite

Moorpark Enthusiastic Programmers Club website

The purpose is to have a website for the club for easy sign up, and easy access to more club information and announcments. We.Love.Hackathons.

Link to website: https://enthusiastic-programmers.github.io/clubWebsite/

Setting up a development environment

  1. Clone this repository

  2. Create a python virtual environment

    python -m venv venv

  3. Activate the virtual environment

    Linux: source venv/bin/activate

    Windows: venv/Scripts/activate.bat

  4. Install dependencies

    pip install -r requirements.txt

  5. Initialize the database tables:

    flask db upgrade

  6. Run flask development server

    python wsgi.py

    Note: The development server will automatically reload source files when it detects an updated file on the disk.

  7. Or, run the flask server with debug mode disabled

    flask run

    Note: This command is not sufficient for running the website in production.

Making changes to the database models

This project uses SQLAlchemy to manage database ORMs (Object-Relational Models). Each model in clubWebsite/database/models.py is mapped to at least one table, where properties of that model represent database columns. SQLAlchemy generates SQL statements, and handles creating/destroying sessions.

The database also uses Alembic (provided by flask-migrate) for generating database migrations. Migrations are effectively scripts that describe the changes in database tables/columns over time, providing version control for database layouts.

When changing or adding database models, in order to use them in your application run

flask db migrate -m "<migration descriptive name here>"

to generate a new migration script. This behaves similarly to a git commit in that the generated script will look at the current database structure, and compare it to the structure described by the ORM models. It will automatically generate a migration script in migrations/versions/ with the generated upgrade() and downgrade() functions. It is often necessary to manually edit or add extra code to facilitate with data migration. Examples of code that needs to be edited manually include transforming types from one form to another (E.G. converting a string to an int, and vice versa).

After generating the migration script, you need to run

flask db upgrade

to apply the database migrations.

Deploying on PythonAnywhere

PythonAnywhere Flask Code Setup

  1. Create a PythonAnywhere account and login

  2. Under the Dashboard tab -> Consoles start a new bash console

  3. Clone the clubWebsite repo:

    git clone https://github.com/Enthusiastic-Programmers/clubWebsite

    cd clubWebsite/

  4. Switch to the flask-server branch

    git checkout flask-server

  5. Create a virtual environment

    python3 -m venv prod_venv

  6. Enter the virtual environment

    source prod_venv/bin/activate

  7. Install python dependencies in the virtual environment

    pip install -r requirements.txt

  8. Create the database

    flask db upgrade

  9. Close the console

    exit

PythonAnywhere Flask App Setup

  1. Go to the Web Apps tab in your PythonAnywhere account

  2. Click Add a new web app

  3. Set the domain name (or leave it as the default of .pythonanywhere.com)

  4. On the Select a Python Web Framework select Manual configuration

  5. Select the python version 3.7

  6. Click Next to generate a sample WSGI configuration file (we will edit this later)

  7. Under the Code section of the web app, se the Source Code directory and the Working Directory to /home/<username>/clubWebsite

  8. Under the Virtualenv tab, set the virtualenv directory to /home/<username>/clubWebsite/prod_venv

  9. Under Static files, add a static location with the url /static and the path /home/<username>/clubWebsite/clubWebsite/static

  10. Under Security, set Force HTTPS to Enabled

  11. Under the Code section, click the WSGI Configuration File to edit it

  12. Delete the existing contents of the WSGI Configuration File and replace it with:

import sys
path = '/home/<username>/clubWebsite'
if path not in sys.path:
    sys.path.append(path)

from wsgi import app as application  
  1. Save the WSGI Configuration File, and click the Reload button to reload the site configuration

Updating an already configured site

  1. Under the Dashboard tab -> Consoles start a new bash console (or click on an existing one)

  2. CD into the git repo:

    cd /home/<username>/clubWebsite

  3. Pull changes

    git pull

  4. Run database migrations (Important!)

    flask db upgrade

  5. Close the console

    exit

  6. Reload the web app

clubwebsite's People

Contributors

ericcsharp avatar hydroidev avatar rogerfachini avatar suborange avatar user234683 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.