Simple web application built using Flask, it allows users to register, log in, and manage their favorite websites. Users can securely store website URLs in the database.
The app will create an empty SQLite database if it wasn't defined in the database directory; the schema is defined within the same folder.
The app uses a partial of the Nice Admin bootstrap template to serve as a frontend.
-
Clone the Repository from terminal:
git clone https://github.com/ahmedsalim3/flask-site-tracker.git cd flask-site-tracker
-
Create a Virtual Environment (optional but recommended):
- On Linux/MacOS:
python -m venv <envname> # <envname> is your environment name source <envname>/bin/activate
- On Windows:
python -m venv <envname> # <envname> is your environment name .\<envname>\Scripts\activate
- Using Conda:
conda create --name <envname> python=3.12 # <envname> is your environment name conda activate <envname>
- On Linux/MacOS:
-
Install Dependencies::
pip install -r requirements.txt
-
Update the configuration file if you need to change the database path or to get a fresh database. The default configuration should work for most cases.
-
Run the app:
python app/app.py # from the root cd app python app.py # from the app directory
-
Navigate to your local browser at
http://127.0.0.1:5000
.
- User Registration: Users can create an account with a username and password
- User Authentication: Secure login/logout functionality using Flask-Login
- Website Management: Users can add, view, and delete their saved websites
- Password Hashing: User passwords are securely hashed using bcrypt
- Bcrypt for hashing passwords and its Tutorial
- Message Flashing using Flashing With Categories
- Flask-WTF extension
- WTF-Forms
- URL-validators
The directory structure below shows the nature of files/directories used in this repo
.
├── README.md
├── requirements.txt
│
├── app
│ ├── app.py <- main app file
│ ├── configs.py <- configuration file
│ ├── database.py
│ ├── forms.py
│ ├── static
│ └── templates <- pages templates
│
├── database
│ ├── database.db <- SQLite3 database
│ └── schema.sql <- schema to setup the database
│
└── screenshots
├── dashboard.png
├── index.png
├── login.png
└── register.png