/Payeet

A server-client combo that simulates a banking system

Primary LanguageDart


Payeet logo Payeet logo

At the core Payeet is a system for transferring points made as Magsihim project.
but as the project grew we have added more and more features.

✨ Features

  • authentication and authorization system built with gRPC and JWT with mail verfication.
  • login from a new deivce alert
  • transfring points
  • friends/followers
  • TLS/SSL encryption
  • and more..

🖥 Technology stack

made using

  • Go
  • MongoDB
  • gRPC
  • Flutter

📱 App screen flow

  • The app is made to look like a mix between a social network and a bank.

screen flow


click to view in full

🚀 Setup:

  • create a config file

run these commands:

In the server folder run:
go run server.go

or run go build and run it with pm2

In the app folder run
flutter run

running the server

🛠 Config:

the port that the server is running on.

PORT=6969

the port and server ip should also be changed in globals.dart.

Validation of tokens:

ACCESS_TOKEN_KEY= <SECRET>
REFRESH_TOKEN_KEY= <SECRET>
ACCESS_TOKEN_DURATION= 10m
REFRESH_TOKEN_DURATION= 24h

Database setup:

CONNECTION_STRING=
DB_NAME=<name>
USER_COLLECTION=<name>
TRANSACTION_COLLECTION=<name>
LOGS_COLLECTION=<name>

Email and password for the mailing service

SYSTEM_EMAIL= <SECRET>
SYSTEM_EMAIL_PASSWORD= <SECRET>

Karma and point calcuation:

BASE_DAILY_BONUS= 100
STREAK_DAILY_BONUS= 0.1
KARMA_MINIMUM_REQUIRED_TRANSFER_DAYS= 3
KARMA_MINIMUM_REQUIRED_TRANSFER_AMOUNT= 1500
KARMA_MULTIPLIER_FACTOR= 0.1
KARMA_MINIMUM_REQUIRED_UNIQUE_USERS= 3
KARMA_MAXIMUM_TRANSFERS_TO_SAME_USER= 3

Full config:

PORT=6969
ACCESS_TOKEN_KEY=<SECRET>
REFRESH_TOKEN_KEY=<SECRET>
ACCESS_TOKEN_DURATION=10m
REFRESH_TOKEN_DURATION=24h
CONNECTION_STRING=
DB_NAME=<name>
USER_COLLECTION=<name>
TRANSACTION_COLLECTION=<name>
LOGS_COLLECTION=<name>
BASE_DAILY_BONUS= 100
STREAK_DAILY_BONUS= 0.1
KARMA_MINIMUM_REQUIRED_TRANSFER_DAYS= 3
KARMA_MINIMUM_REQUIRED_TRANSFER_AMOUNT= 1500
KARMA_MULTIPLIER_FACTOR= 0.1
KARMA_MINIMUM_REQUIRED_UNIQUE_USERS= 3
KARMA_MAXIMUM_TRANSFERS_TO_SAME_USER= 3
SYSTEM_EMAIL= <SECRET>
SYSTEM_EMAIL_PASSWORD= <SECRET>