Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
304 commits
Select commit Hold shift + click to select a range
72d556b
Updated the create letter loading sign
aaryanmittal154 Dec 6, 2022
1e1d7b3
Updated
aaryanmittal154 Dec 6, 2022
1e0cd61
Merge branch 'main' of https://gitlab.com/directrep/direct-rep
aaryanmittal154 Dec 6, 2022
6d19147
Merge branch 'main' into kim-unit-tests
Dec 6, 2022
e9c0e7a
console log clean
Dec 6, 2022
fff1a74
landing page text updated
Dec 6, 2022
b74d3f4
updated journal
Dec 6, 2022
27f8dae
Updated Journal
aaryanmittal154 Dec 6, 2022
5e12d67
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 6, 2022
bf06a3d
Updated Journal
aaryanmittal154 Dec 6, 2022
f190456
Updated Journal
aaryanmittal154 Dec 6, 2022
24c90af
Updated Journal
aaryanmittal154 Dec 6, 2022
c39c9d0
working on CI/CD cookbooks. Got OpenAI/Google Keys, Signing Key, and …
JohnGardner-dev Dec 7, 2022
b343901
Added letter detail view
aaryanmittal154 Dec 7, 2022
a935502
Updated Journal
aaryanmittal154 Dec 7, 2022
68525bc
working on CI/CD cookbook environment variables
JohnGardner-dev Dec 7, 2022
7b611a6
made Dockerfiles
JohnGardner-dev Dec 7, 2022
4448aff
preparing for deployment...
JohnGardner-dev Dec 7, 2022
62c871c
separated database urls and fixed some key imports
JohnGardner-dev Dec 7, 2022
a3b5e8c
fixed users_database_url import in migrations file
JohnGardner-dev Dec 7, 2022
8823de9
typo in origins,
JohnGardner-dev Dec 7, 2022
5992c26
fixed database_url key errors
JohnGardner-dev Dec 7, 2022
9852104
please...
JohnGardner-dev Dec 7, 2022
57e9569
.
JohnGardner-dev Dec 7, 2022
347729d
makin' changes
JohnGardner-dev Dec 7, 2022
c6cdd8d
users print db_url/deleted test-service
JohnGardner-dev Dec 7, 2022
2d9d522
.
JohnGardner-dev Dec 7, 2022
a254f1c
.
JohnGardner-dev Dec 7, 2022
ff067a6
trying to fix authenticator
JohnGardner-dev Dec 7, 2022
8219899
DO THE THING
JohnGardner-dev Dec 7, 2022
3dd31b9
this time for sure...
JohnGardner-dev Dec 7, 2022
60e0951
added port numbers to Dockerfile last line
JohnGardner-dev Dec 7, 2022
4cdf114
changed psycopg from getting connection-pool to just getting connection
JohnGardner-dev Dec 7, 2022
daac37c
...
JohnGardner-dev Dec 7, 2022
721c43e
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 7, 2022
23fe7c0
Updated with main
aaryanmittal154 Dec 7, 2022
0fbb82d
testing keepalive
JohnGardner-dev Dec 7, 2022
804dc2f
added console log statements back in
Dec 7, 2022
2b39f7f
Merge branch 'main' into kim-latest
Dec 7, 2022
0288199
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 7, 2022
b0ca663
removed port numbers from Dockerfile CMD
JohnGardner-dev Dec 7, 2022
bc90fa0
added port numbers back lul
JohnGardner-dev Dec 7, 2022
4d287b8
removed port number and changed service hosts
JohnGardner-dev Dec 7, 2022
82ce9d1
reverted changes and restored port numbers
JohnGardner-dev Dec 7, 2022
1dd4015
...
JohnGardner-dev Dec 7, 2022
5eca4c8
Merge branch 'main' into kim-latest
Dec 7, 2022
0cb5100
from - to _
Dec 7, 2022
64a8ebe
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 7, 2022
68b8e77
print statements
JohnGardner-dev Dec 7, 2022
c244df9
change timeout
JohnGardner-dev Dec 7, 2022
b40da86
lint test job
JohnGardner-dev Dec 7, 2022
7d9be29
test who?
JohnGardner-dev Dec 7, 2022
79d1b23
.
JohnGardner-dev Dec 7, 2022
7c38127
.
JohnGardner-dev Dec 7, 2022
ba8112a
.
JohnGardner-dev Dec 7, 2022
43a215d
force ports to 8000
JohnGardner-dev Dec 7, 2022
3ad2250
print statements
JohnGardner-dev Dec 8, 2022
8258c3c
Removed Optional For issues Get method
aaryanmittal154 Dec 8, 2022
22ca691
Added account print statement
aaryanmittal154 Dec 8, 2022
673633a
Added pool.py print statement
aaryanmittal154 Dec 8, 2022
ab4111a
Added commit after id
aaryanmittal154 Dec 8, 2022
c1601b6
Went back to the old method
aaryanmittal154 Dec 8, 2022
91a9724
removed the extra package json files from main directory
aaryanmittal154 Dec 8, 2022
0954058
back
aaryanmittal154 Dec 8, 2022
6b9a4b1
removed commit and added print statements
aaryanmittal154 Dec 8, 2022
30386d8
copied from old gitlab branch
aaryanmittal154 Dec 8, 2022
a693e29
copied old code for letter service
aaryanmittal154 Dec 8, 2022
0a8f8be
change the letters service to the new method
aaryanmittal154 Dec 8, 2022
3f3fa13
added print statement
aaryanmittal154 Dec 8, 2022
5a665d8
updated the pool
aaryanmittal154 Dec 8, 2022
ac2b55e
Merge branch 'main' into kim-latest
Dec 8, 2022
6257472
updates from main
Dec 8, 2022
a7196a1
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 8, 2022
de1c04d
new OAuth token file
Dec 8, 2022
0576fac
Updated Journal
aaryanmittal154 Dec 8, 2022
1d246cb
.token_auth
Dec 8, 2022
bb8acb1
testing token auth file
Dec 8, 2022
8bd7a8f
new url for token in token_auth
Dec 8, 2022
bad0936
testing auth url and print statements
Dec 8, 2022
2465db7
more url tests
Dec 8, 2022
29b8999
testing conninfo and previous auth method
Dec 8, 2022
7bbf1d9
printing account data
Dec 8, 2022
747d96d
testing auth 1 - 2 1 - 2
Dec 8, 2022
86e3d4d
testing new databases
Dec 8, 2022
ee9aca4
the more things change the more they stay the same
Dec 8, 2022
0c6fbf9
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 8, 2022
7f44118
frontend deployment test 1
Dec 8, 2022
6008fc7
frontend deployment test 2
Dec 8, 2022
696e885
test 3
Dec 9, 2022
afa17c8
test 4
Dec 9, 2022
e255982
testing basename
Dec 9, 2022
02727f3
testing basename 2
Dec 9, 2022
157a035
more console log
Dec 9, 2022
4751786
more console log public url
Dec 9, 2022
0d27471
more basename testing
Dec 9, 2022
9675880
navb changed
Dec 9, 2022
7bff6e4
basename test 3?
Dec 9, 2022
d80e3fe
no navb
Dec 9, 2022
9e707a0
still working on basename
Dec 9, 2022
ffb122f
testing Link
Dec 9, 2022
910e651
testing Link 2
Dec 9, 2022
45749c0
fixed landing page links!
Dec 9, 2022
15c8ac5
testing https and more env
Dec 9, 2022
9ea3a67
added s back
Dec 9, 2022
6ca110a
login console log
Dec 9, 2022
f4c1db2
removed / from token/
Dec 9, 2022
50278fc
more / edits
Dec 9, 2022
b5ec4e6
fixing CORS?
Dec 9, 2022
109ba73
CORS?
Dec 9, 2022
66cf615
get current account data?
Dec 9, 2022
3ecb1e6
hardcoding CORS host
Dec 9, 2022
e58bae9
added kwargs to connect pool
Dec 9, 2022
74701d4
back to no pool db in letters service
Dec 9, 2022
98af271
added conninfo
Dec 9, 2022
500b2a3
added conn back to user service
Dec 9, 2022
8fbcabb
removed params from create letter store
Dec 9, 2022
3d3ca89
added auth to get open ai dependency
Dec 9, 2022
373cac3
testing post letter
Dec 9, 2022
8448cfe
updates print POST letter
Dec 9, 2022
3e44d4e
testing post letter
Dec 9, 2022
65406f9
still testing post letter
Dec 9, 2022
c27a61d
ok
Dec 9, 2022
e5dcbb1
checking letter api store headers
Dec 9, 2022
e3aaadb
without prepareHeaders
Dec 9, 2022
1db8287
testing post without redux
Dec 9, 2022
0cdd3ea
removed prompt from backend for create letter
Dec 9, 2022
7c3f9a7
POST worked! testing PUT letter
Dec 9, 2022
1f550ae
POST worked! testing PUT letter redo
Dec 9, 2022
32c0f3b
PUT letter worked! testing POST reps
Dec 9, 2022
99167a9
fixing post rep body
Dec 9, 2022
d8fa546
stringify data for rep
Dec 9, 2022
2b677a9
FRONTEND DEPLOYMENT IS WORKING!
Dec 9, 2022
0d76102
fixed leading zeros for zipcode
Dec 9, 2022
f297902
testing tests
Dec 9, 2022
0084cd4
added pytest
Dec 9, 2022
713b417
fixed import line 2
Dec 9, 2022
78609ea
added tests to docker
Dec 9, 2022
a0b5c29
added cd to ci-yml
Dec 9, 2022
7fc244d
Updated Journal
aaryanmittal154 Dec 9, 2022
52cdf60
updated requirements psycopg 3.1.4
Dec 9, 2022
39c11fd
added requests to users
Dec 9, 2022
d04f661
added S to auth
Dec 9, 2022
07938d2
authenticatorS
Dec 9, 2022
05ffab3
changed id in test to int
Dec 9, 2022
413c37b
testing letters test
Dec 9, 2022
de474d0
testing letters test
Dec 9, 2022
b8b467c
more letters tests test
Dec 9, 2022
149d6bf
testing letters
Dec 9, 2022
5e4e1dc
testing letters again
Dec 9, 2022
049c9a2
testing letter
Dec 9, 2022
54e1309
CreateLetter test
Dec 9, 2022
8bb7815
testing issues
Dec 9, 2022
ab04755
testing reps
Dec 9, 2022
7b7b70f
testing reps auth
Dec 9, 2022
1c72072
testing reps 3
Dec 9, 2022
a0c5b36
test reps expected
Dec 9, 2022
6af3c69
reps? hello?
Dec 9, 2022
fca2345
lambda None
Dec 9, 2022
92de76a
reps override
Dec 9, 2022
26742fb
bunch of print statements
Dec 9, 2022
8fc3c3c
reps with no class
Dec 9, 2022
d1fa8c7
testing all letters
Dec 9, 2022
00e6df2
testing letters again
Dec 9, 2022
7dbc3a0
empty letters
Dec 9, 2022
43ec393
get all
Dec 9, 2022
5354070
get all letters
Dec 9, 2022
737a0ad
[ ]
Dec 9, 2022
7baee54
testing reps
Dec 9, 2022
38eaf27
testing RepIn
Dec 9, 2022
75afdf8
no status code
Dec 9, 2022
0aa2fa3
test_reps
Dec 10, 2022
c63aa48
more tests
Dec 10, 2022
f1b4bf4
no dict()
Dec 10, 2022
2147d45
new function
Dec 10, 2022
477a560
let's do some linting
Dec 10, 2022
578248d
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 10, 2022
fd27e32
Updated
aaryanmittal154 Dec 10, 2022
abffdd7
cleaning up main
Dec 10, 2022
f8f9b37
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 10, 2022
c89f46e
checking lint checks
Dec 10, 2022
8cb2c6e
lint again
Dec 10, 2022
1aa7dcc
linting
Dec 10, 2022
e17a2b2
more linting
Dec 10, 2022
a7bc477
Formatting Done
aaryanmittal154 Dec 10, 2022
e5bfed9
some more linting
Dec 10, 2022
7a3e538
Updated Journal
aaryanmittal154 Dec 10, 2022
737dad9
lint again
Dec 10, 2022
a8d0c7c
Updated Journal
aaryanmittal154 Dec 10, 2022
bc812ef
Merge branch 'main' into Aaryan-frontend
aaryanmittal154 Dec 10, 2022
1e43dcd
Updated the formatting
aaryanmittal154 Dec 10, 2022
b190848
Updated the formatting (noqa)
aaryanmittal154 Dec 10, 2022
678c163
Updated the formatting (black)
aaryanmittal154 Dec 10, 2022
2463c7c
Removed unneccesary comments
aaryanmittal154 Dec 10, 2022
8ec048e
Formatted
aaryanmittal154 Dec 10, 2022
62e22ea
Formatting updated
aaryanmittal154 Dec 10, 2022
77df59a
Formatting updated (tests)
aaryanmittal154 Dec 10, 2022
733cef3
Removed optional and try from routes
aaryanmittal154 Dec 10, 2022
cf95c8a
Updates react redux and navbar
aaryanmittal154 Dec 10, 2022
231a4b5
Updated landing page button
aaryanmittal154 Dec 10, 2022
901dee2
Updated landing page button left button
aaryanmittal154 Dec 10, 2022
b8b7a0e
Updated Navbar
aaryanmittal154 Dec 10, 2022
eea2bbb
Updated Navbar (if)
aaryanmittal154 Dec 10, 2022
6a501b4
Updated Navbar and landing page
aaryanmittal154 Dec 10, 2022
88dd26d
Updated Navbar if statement
aaryanmittal154 Dec 10, 2022
c045e2b
Updated Navbar with home button
aaryanmittal154 Dec 10, 2022
6846279
Updated Navbar with home button
aaryanmittal154 Dec 10, 2022
f49dd53
frontend formatting
Dec 11, 2022
cbfc95d
frontend formatting 2
Dec 11, 2022
48b8262
Review test
Dec 12, 2022
2c77d73
Review test 2
Dec 12, 2022
b43a691
Review test 3
Dec 12, 2022
2073dbd
Review test 4
Dec 12, 2022
d152c61
Review test 5
Dec 12, 2022
154e0fb
Detail view email test
Dec 12, 2022
fe26867
read me updates
Dec 12, 2022
c91799b
read me updates api design
Dec 12, 2022
a2f62d6
more read me formatting
Dec 12, 2022
491ea2a
read me again
Dec 12, 2022
ce5462c
linking Read me
Dec 12, 2022
49a22a5
added my README
JohnGardner-dev Dec 12, 2022
ae8944f
swaped READMEs. Old one is still there as README_old
JohnGardner-dev Dec 12, 2022
c6eb69c
README lost .md file ext lol. fixed.
JohnGardner-dev Dec 12, 2022
d258b4a
README edits
JohnGardner-dev Dec 12, 2022
8ad7277
README edits
JohnGardner-dev Dec 12, 2022
f509ae3
README edits
JohnGardner-dev Dec 12, 2022
901f817
README edits
JohnGardner-dev Dec 12, 2022
99ff424
Update journals/vincent_phung.md
Dec 12, 2022
80fff62
README edits
JohnGardner-dev Dec 12, 2022
3941300
README edits
JohnGardner-dev Dec 12, 2022
c9e1f83
README edits
JohnGardner-dev Dec 12, 2022
d34cacb
README edits
JohnGardner-dev Dec 12, 2022
3bed318
README edits
JohnGardner-dev Dec 12, 2022
5cd899a
README edits
JohnGardner-dev Dec 12, 2022
7b94f80
README edits
JohnGardner-dev Dec 12, 2022
90dd7f1
README edits
JohnGardner-dev Dec 12, 2022
1452d5d
README edits
JohnGardner-dev Dec 12, 2022
f189827
README edits
JohnGardner-dev Dec 12, 2022
2197643
README edits
JohnGardner-dev Dec 12, 2022
7225ebe
README edits
JohnGardner-dev Dec 12, 2022
8134e79
README edits
JohnGardner-dev Dec 12, 2022
2dde60b
README edits
JohnGardner-dev Dec 12, 2022
285d2ca
README edits
JohnGardner-dev Dec 12, 2022
7c43022
README edits
JohnGardner-dev Dec 12, 2022
42d4ca9
README edits
JohnGardner-dev Dec 12, 2022
e883349
README edits
JohnGardner-dev Dec 12, 2022
f837f8e
Updated Journal
aaryanmittal154 Dec 12, 2022
8d65e7b
first commit
vincenthphung Jan 6, 2023
33596ab
first commit
vincenthphung Jan 6, 2023
dec42bc
made updates
vincenthphung Jan 6, 2023
3d0653d
[ImgBot] Optimize images
ImgBotApp Jan 8, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
3 changes: 2 additions & 1 deletion .flake8
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
[flake8]
exclude = ghi,docs,journals,sample_service/migrations
exclude = ghi,docs,journals,**/migrations/**,
ignore=E402,W503
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ new_keys.py
__pycache__/
*.py[cod]
*$py.class

.DS_Store
# C extensions
*.so

Expand Down
45 changes: 22 additions & 23 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,39 @@ stages:
- build
- deploy

# Run flake8 to check for code quality
lint-test-job:
image: python:3-bullseye
image: "python:3-bullseye"
stage: test
script:
- pip install flake8
- flake8 sample_service
- flake8 letters_service
- flake8 users_service

# Run the unit tests
# api-unit-test-job:
# image: python:3-bullseye
# stage: test
# needs:
# - lint-test-job
# script:
# - cd sample_service
# - pip install -r requirements.txt
# - python -m pytest
user-service-test-job:
image: "python:3-bullseye"
stage: test
script:
- cd users_service
- pip install -r requirements.txt
- python -m pytest

letters-service-test-job:
image: "python:3-bullseye"
stage: test
script:
- cd letters_service
- pip install -r requirements.txt
- python -m pytest

# Build the React/JavaScript front-end
build-front-end-job:
stage: build
image: node:lts-bullseye
image: "node:lts-bullseye"
needs:
- lint-test-job
variables:
# If either of these variables is defined in the GitLab
# CI/CD variables, that value will override the value here.
# You need to substitute in your real values for
# GROUP_NAME, PROJECT_NAME, & WEBSERVICE_NAME below.
PUBLIC_URL: https://GROUP_NAME.gitlab.io/PROJECT_NAME/
REACT_APP_SAMPLE_SERVICE_API_HOST: https://WEBSERVICE_NAME.onrender.com
PUBLIC_URL: "https://directrep.gitlab.io/direct-rep"
REACT_APP_LETTERS_API_HOST: "https://letters-service-u1pb.onrender.com"
REACT_APP_USERS_API_HOST: "https://users-service-57wg.onrender.com"
script:
- cd ghi
- npm install
Expand All @@ -43,8 +44,6 @@ build-front-end-job:
artifacts:
paths:
- ghi/build/

# Deploy the React/JavaScript front-end to GitLab pages
pages:
stage: deploy
rules:
Expand Down
14 changes: 1 addition & 13 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
{
"editor.formatOnPaste": true,
"python.formatting.provider": "black",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"files.autoSave": "afterDelay",
"cSpell.words": [
"Excalidraw",
"labeltext",
"Mittal",
"Signup",
"wireframes",
"zipcode"
]
"python.analysis.typeCheckingMode": "basic"
}
350 changes: 207 additions & 143 deletions README.md

Large diffs are not rendered by default.

32 changes: 14 additions & 18 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,38 +14,34 @@ services:
- POSTGRES_PASSWORD=password
ports:
- 15432:5432
fastapi:
users_service:
build:
context: sample_service
dockerfile: Dockerfile.dev
ports:
- 8000:8000
volumes:
- ./sample_service:/app
users-service:
build:
context: ./users-service
context: ./users_service
dockerfile: ./Dockerfile.dev
ports:
- 8080:8000
volumes:
- ./users-service:/app
- ./users_service:/app
environment:
SIGNING_KEY: 7ea8f8c1d636b6f92b59a46326d9f59da1e09f0c986fbaeacaad64fed817ce6d
DATABASE_URL: postgresql://users:password@postgres/users
SIGNING_KEY: ${SIGNING_KEY}
USERS_DATABASE_URL: ${USERS_DATABASE_URL}
WAIT_HOSTS: postgres:5432
letters-service:
letters_service:
build:
context: ./letters-service
context: ./letters_service
dockerfile: ./Dockerfile.dev
ports:
- 8090:8000
volumes:
- ./letters-service:/app
- ./letters_service:/app
environment:
SIGNING_KEY: 7ea8f8c1d636b6f92b59a46326d9f59da1e09f0c986fbaeacaad64fed817ce6d
DATABASE_URL: postgresql://letters:password@postgres/letters
SIGNING_KEY: ${SIGNING_KEY}
LETTERS_DATABASE_URL: ${LETTERS_DATABASE_URL}
WAIT_HOSTS: postgres:5432
OPENAI_API_KEY: ${OPENAI_API_KEY}
GOOGLE_CIVICS_KEY: ${GOOGLE_CIVICS_KEY}
OPENAI_URL: ${OPENAI_URL}
GOOGLE_CIVICS_URL: ${GOOGLE_CIVICS_URL}
ghi:
image: node:lts-bullseye
command: /bin/bash run.sh
Expand Down
15 changes: 15 additions & 0 deletions docs/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"editor.formatOnPaste": true,
"python.formatting.provider": "black",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"files.autoSave": "off",
"cSpell.words": [
"Excalidraw",
"labeltext",
"Mittal",
"Signup",
"wireframes",
"zipcode"
]
}
39 changes: 27 additions & 12 deletions docs/README.MD
Original file line number Diff line number Diff line change
@@ -1,38 +1,53 @@
# Direct Rep

## Who are your customers?

People residing in the United States of America.

## What needs/desires does your application satisfy for your customers?

Making contacting your elected officials more accessible

## What features/functionality do you plan to have in the application that helps your customers?

- List of representatives with their details.
- List of issues.
- Open AI to draft an automated AI generated letter.
- Login / logout feature (Gmail API).
- Login / logout feature.
- Email template sent to user’s email with letter draft and rep’s emails list.
- Keep track of past letter templates / requests

## Design
[API Design](api-design.md)
![API Design](wireframes/wo.png)
![API Design](wireframes/direct-rep-wireframe.png)
![API Design](wireframes/user-service-endpoints.png)
![API Design](wireframes/letter-service-endpoints.png)

### Users endpoints

[API Design Users](api-design-users.md)

### Letters endpoints

[API Design Letters](api-design-letters.md)

### Wireframe and endpoints diagrams

![API Design](wireframes/direct-rep-wireframe-overview.png)
![API Design](wireframes/users-microservice-wireframe.png)
![API Design](wireframes/letters-microservice-wireframe.png)
![API Design](wireframes/users-microservice-endpoints.png)
![API Design](wireframes/letters-microservice-endpoints.png)

## Stretch Goals

- Info about upcoming elections
- “Am I registered?” function to check user voter registration
- “When’s the next election?” function
- Direct Rep uses your location and the Google Civic Information API to gather information about your representatives.



## The Team
- Aaryan Mittal- Developer 💻

- John Gardner - Developer 💻
- Aaryan Mittal- Developer 💻

- John Gardner - Developer 💻

- Kim Geraghty - Developer 💻
- Kim Geraghty - Developer 💻

- Vincent Phung - Developer 💻
- Vincent Phung - Developer 💻
Loading