Warbler is a Twitter clone for bird lovers, so tweet your thoughts and warble it up!
It is a full-stack web application built with Flask, Python, Jinja, WTForms, PostgresSQL and SQLAlchemy. Warbler is engineered with encryption and password hashing, user authentication and authorization, RESTful routing, as well as thoughtful database designs and models.
- Users can sign up for an account, log in and edit their profile (including updating profile picture)
- Users can create posts, referred to as "warbles"
- Users can like and unlike warbles
- Users can view a list of warbles they have liked
- Users can follow other users and see who is following them
- Users can view a news feed, containing warbles of users that they follow
- Users can view a list of their own posted warble
- Users can delete their own warbles
- Users can search for a specific user or post, using keywords
To get started with Warbler, follow the steps below:
- Clone the repository to your local machine.
- Navigate to warbler directory:
cd flask-warbler
- Create Python virtual environment:
python -m venv venv
- Activate virtual environment:
source venv/bin/activate
- Install dependencies with
pip install -r requirements.txt
- Create database:
createdb warbler
- Add environment variables: create a
.env
file, following instructions in.env.example
to get variables correctly set up - Seed database:
python seed.py
- Start server:
flask run -p 5001
- Open
http://localhost:5001/
to view project in the browser
Tests are run using unittest. To run the tests, follow the steps below:
- Open a terminal.
- Ensure you are in warbler directory:
cd flask-warbler
. - Create and activate virtual environment (follow steps 3-5 from "Getting Started").
- Run
FLASK_DEBUG=False python -m unittest
to execute the tests.
- Jinja/WTForms for frontend
- Flask/Python for backend
- PostgreSQL for database
- SQLAlchemy for database ORM
- Flask
- Python
- PostgreSQL
- SQLAlchemy
- Jinja
- WTForms
- Bcrypt
- Gunicorn
- jQuery
- Bootstrap
- Gracee Gallivan
- JiHye Yoon (pair programming partner)