Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/seluj78/pymatcha

Python Matcha Dating Website
https://github.com/seluj78/pymatcha

Last synced: 4 days ago
JSON representation

Python Matcha Dating Website

Awesome Lists containing this project

README

        

![GitHub](https://img.shields.io/github/license/seluj78/pymatcha?style=for-the-badge) ![Travis (.com)](https://img.shields.io/travis/com/seluj78/pymatcha/dev?label=builds%20and%20tests&style=for-the-badge) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/seluj78/pymatcha?style=for-the-badge) ![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/seluj78/pymatcha?style=for-the-badge)
# PyMatcha
#### Made by [Jules Lasne](https://github.com/seluj78) and [Lauris Skraucis](https://github.com/suppalarry)

## Summary
- [Why ?](#why)
- [Installation](#installation)
- [For Production](#for-production)
- [For developpment](#for-developpment)
- [Backend](#backend)
- [Workers](#workers)
- [Frontend](#frontend)
- [Services in docker-compose](#the-different-services-on-the-docker-compose)
- [What does it look like](#what-does-it-look-like)
- [How long did it take](#how-long-did-it-take)
- [How many lines of code](#how-many-lines-of-code)
- [What are the features](#features-implemented)
- [What are the bonuses](#bonuses-implemented)

### Why ?
Matcha is a [42](https://42.fr) school project aiming to teach how to make a dating website. Lauris and Jules chose to make it as close as it could be to a real production product.
You can find the subject [here](https://github.com/Seluj78/PyMatcha/blob/dev/subject.pdf)

### Installation

First of all, contact [Jules](https://github.com/seluj78) or [Lauris](https://github.com/supalarry) to get the env files.

For more information, checkout [the backend .env.template](https://github.com/Seluj78/PyMatcha/blob/dev/.env.template) and [the frontend .env.template](https://github.com/Seluj78/PyMatcha/blob/dev/frontend/.env.template)

#### For production
You can simply download or git clone the project and, once inside of it, run `docker-compose up --build`.

The website will be accessible on port `4242`.

If you do not want to build the containers yourself, you can use `docker-compose-gh.yml` instead:

```bash
docker-compose -f docker-compose-gh.yml up
```

#### For developpment
First of all, clone or download the repository, extract it if necessary then cd into it.

##### Backend:
You'll need `python3.8`+. cd in the backend and run:
```shell
python3.8 -m venv venv --prompt PyMatcha
```
```shell
source venv/bin/activate
```
```shell
pip install backend/requirements.txt
```
```shell
python run.py
```

##### Workers:
Same thing as for the backend, just then `cd` in the backend folder and run
```shell
celery -A PyMatcha.celery worker -E --loglevel=INFO -B --pool=threads
```

##### Frontend:
`cd` in the frontend folder and run `yarn install` then `yarn run`

### The different services on the docker-compose:

- Backend on port `8080`
- Frontend on port `4242`
- Swagger doc on `9000`
- PHPMyAdmin for debug on `8183`
- Workers on internal port
- Redis on `6379`
- MySQL on internal port

### What does it look like
![Home page](https://i.imgur.com/fS5QMl2.jpeg)
![Sign Up](https://i.imgur.com/YuHHG6D.png)
![Onboarding](https://i.imgur.com/iOQQRKQ.png)
![Recommended profiles](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/recommended_profiles.jpg?raw=true)
![Search page](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/search_page.png?raw=true)
![Search no results](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/search_no_results.png?raw=true)
![Search results](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/search_results.jpg?raw=true)
![Profile settings](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/profile_settings.png?raw=true)
![History](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/history.jpg?raw=true)
![Profile](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/unmatched_profile.png?raw=true)
![Matched profile](https://github.com/seluj78/PyMatcha/blob/dev/screenshots/matched_profile.jpg?raw=true)
![Matches and chat](https://i.imgur.com/bofiix9.png)

### How long did it take
Lauris and Jules started working on it at the begining of september and finished on `XXX`.
If you see commits before September, it's of an older version where Jules changed twice of frontend partner
Here is a nice visual representation of the commits:

[![Gource Video](https://img.youtube.com/vi/wi6zGENXwdo/0.jpg)](https://youtu.be/wi6zGENXwdo)

### How many lines of code
As of Thu 12 Nov 11:40
```
637 text files.
624 unique files.
164 files ignored.

github.com/AlDanial/cloc v 1.88 T=1.68 s (333.3 files/s, 17377.3 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
JSON 329 0 0 7924
Python 119 1560 2126 5633
Vuejs Component 53 146 91 4492
YAML 7 32 22 2531
XML 14 0 0 2042
JavaScript 21 44 35 1156
CSS 5 61 5 459
HTML 4 0 22 253
SQL 1 43 66 202
Markdown 4 42 0 139
TOML 1 3 5 21
Dockerfile 1 12 0 18
SVG 1 0 0 8
-------------------------------------------------------------------------------
SUM: 560 1943 2372 24878
-------------------------------------------------------------------------------
```

### Features implemented
- Sign-up and sign-in
- Forgot password email
- Resend confirmation email
- Registration process to add info on user
- Browse recommended users
- Filter them
- Sort them
- Search users
- Filter them
- Sort them
- Like and superlike a user
- Notifications for:
- Like
- Unlike
- Match
- Message
- Chat with instant replies
- Settings page where you can modify everything
- History page

#### Bonuses implemented
- Superlikes
- [CI/CD](https://github.com/Seluj78/PyMatcha/blob/dev/.travis.yml)
- [Postman API tests](https://github.com/Seluj78/PyMatcha/blob/dev/PyMatchaV2.postman_collection.json)
- Bots
- [Swagger API Documentation](https://github.com/Seluj78/PyMatcha/blob/dev/backend/schemas/swagger.yaml)
- Backend Site map (:8080/site-map)