diff --git a/README.md b/README.md index 6d614ce..a2f8e8c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Dating-Website ## Description Minimal dating website made in python. -It uses flask to render the HTML, saves the data in a MySQL database and also features an authentication method using PGP where the database stores the user's PGP key's fingerprint and uses that to encrypt a message only you decrypt, but successfully decrypting the message you athenticate to your account. +It uses flask to render the HTML, saves the data in a database and also features an authentication method using PGP where the database stores the user's PGP key's fingerprint and uses that to encrypt a message only you decrypt, but successfully decrypting the message you athenticate to your account. It's also supposed to be very easy to use, currently its still in development but the vision is that you can be enganged on the website right from the start featuring a very powerfull search page and not needing an account to use the website. This website also does not use JavaScript making it easy to run on any browser. diff --git a/plan.md b/plan.md deleted file mode 100644 index 1b47670..0000000 --- a/plan.md +++ /dev/null @@ -1,93 +0,0 @@ -# User System Plan - -## 1. Database Schema (`User` model) - -- **Identity & Security** - - `username` (unique, required) - - `pgp` (unique, required) - - `is_verified` (boolean) - -- **Contacts** - - `xmpp` (unique, required) - - `email` (unique, optional) - - `phone` (unique, optional) - -- **Personal Info** - - `firstname` (required) - - `lastname` (required) - - `sex` (`male` / `female`, required) - - `date_of_birth` (required) - - `race` (optional) - -- **Profile & Media** - - `profile_picture` (required) - - `pictures` (optional array) - -- **Location** - - `country` (required) - - `city` (optional) - -- **Physical Attributes** - - `height` (optional float) - - `weight` (optional int) - -- **Preferences** - - `prefered_age_range` (optional) - - `likes` (optional array) - - `dislikes` (optional array) - ---- - -## 2. Registration - -1. **User fills form** - - All fields except `id`, `is_verified`. - -2. **Server receives data** - - Validate required fields and unique constraints. - - Temporarily store as **unverified**. - -3. **PGP Verification** - - Server encrypts a message with user's PGP public key. - - Show **validation page** with encrypted message. - - User decrypts message and submits. - - Server validates ownership and sets `is_verified=True`. - -4. **Create Profile Page & Redirect** - - Generate user profile page with all info. - - Redirect user to main page or search page. - ---- - -## 3. Search Page - -- **Display**: Public user profiles as cards - - Show `profile_picture`, `firstname`, `lastname`, age, `country`, `city`. - -- **Filters**: - - All fields **except** `pgp`, `id`, `username`. - - Include boolean checks for presence of `email`, `phone`, `xmpp`. - -- **Profile Click** - - Open full profile page with all info, pictures, likes/dislikes. - ---- - -## 4. Login Flow - -1. User enters `username` + `PGP key`. -2. Server verifies PGP via challenge. -3. On success: - - User can edit **all fields** execpt `id` and `username`. - - User can change pgp key, new pgp key must be verified. - ---- - -## 5. Software Stack - -- **Software used**: - - Flask (backend framework) - - MySQL (Database) - - SQLAlchemy (ORM) - - python-gnupg (PGP validation) - - Flask-WTF (Forms validation)