Skip to content

tornikepe/meti

Repository files navigation

Meti

A full-stack investment-platform UI — built as an educational / portfolio demo.

Bilingual (ქართული · English) · React + TypeScript frontend · Express + Prisma backend


⚠️ This is a demo — not a real financial service

Meti is an educational / portfolio project that reproduces the look and flow of a daily-income investment platform. It exists to demonstrate full-stack engineering, not to take anyone's money.

  • Not a real investment, financial product, brokerage, or service.
  • No real money. Deposit addresses are fake placeholders — never send funds.
  • 🔢 All packages, returns, and stats are fictional sample data.

Guaranteed daily returns like the ones shown here do not exist in real investing — they are the hallmark of Ponzi/HYIP scams. This repo is a UI/engineering exercise only.


🎯 What it demonstrates

A realistic, production-shaped app built end-to-end:

  • 🌐 Bilingual UI (ka / en) with react-i18next and a language switcher
  • 🔐 Auth — register / login / forgot-password with JWT + bcrypt password hashing
  • 📦 Packages — a catalogue of sample plans with daily-income figures and ROI
  • 📊 User dashboard — active packages, accrued income, history, referrals
  • 💳 Deposit / withdraw flows — mocked end-to-end (fake wallet addresses, admin review)
  • 👥 Referrals — invite codes and a referral-reward flow
  • 🛠️ Admin panel — users, deposits, withdrawals, proofs, revenue, notifications
  • ⏱️ Scheduled job — a daily-income cron that accrues package income
  • 🔒 Hardening — Helmet security headers, rate limiting, Zod validation

🧱 Tech stack

Layer Tech
Frontend React 18, TypeScript, Vite, Tailwind CSS, React Router v6
i18n react-i18next (ka / en)
Backend Node.js, Express, deployed as Vercel serverless functions
Database PostgreSQL via Prisma ORM
Auth JWT (Authorization: Bearer), bcrypt
Jobs Vercel Cron → api/cron/daily-income.ts
Security Helmet, express-rate-limit, Zod

📁 Structure

meti/
├─ index.html
├─ vite.config.ts · tailwind.config.js · tsconfig*.json
├─ vercel.json                # serverless routing + cron schedule
├─ .env.example               # DATABASE_URL, JWT_SECRET, CRON_SECRET
├─ prisma/
│  ├─ schema.prisma           # users, packages, deposits, withdrawals, referrals…
│  └─ seed.ts                 # seeds the sample packages
├─ api/                       # Vercel serverless entry + cron
├─ server/                    # Express app
│  ├─ routes/                 # auth, user, packages, deposits, withdrawals, proofs, admin
│  ├─ services/               # income, deposits, scheduler
│  └─ lib/                    # auth, prisma, security, referral, email…
└─ src/                       # React app
   ├─ i18n/                   # ka.json · en.json
   ├─ data/plans.ts           # ⭐ sample package figures (edit here)
   ├─ lib/                    # api client, constants, formatting
   ├─ store/                  # AppContext
   ├─ components/             # Navbar, Footer, PlanCard, admin/…
   └─ pages/                  # Landing, Login, Register, Packages, Dashboard, admin/…

🚀 Getting started

Frontend only (quickest look)

npm install
npm run dev          # → http://localhost:5173

Full stack (with the API + database)

# 1. Configure environment
cp .env.example .env         # fill DATABASE_URL, JWT_SECRET, CRON_SECRET

# 2. Set up the database (PostgreSQL — Supabase / Neon / local)
npm run db:migrate           # create tables
npm run db:seed              # seed the sample packages

# 3. Run the API and the app
npm run server               # Express API → http://localhost:4000
npm run dev                  # Vite app  → http://localhost:5173

Make a user an admin by setting role = 'admin' in the users table. See BACKEND.md for the full API reference and money-flow notes.


📦 Sample packages

Fictional demo figures from src/data/plans.ts — term grows by 10 days per tier; total = daily × days, kept to a modest ~20–33% for the whole term.

Package Price (₾) Daily (₾) Days Total (₾) ROI
Start 20 0.4 60 24 20%
Basic 50 0.9 70 63 26%
Standard 100 1.6 80 128 28%
Plus ★ 300 4 90 360 20%
Bronze 500 6.5 100 650 30%
Silver 1,000 12 110 1,320 32%
Gold 2,000 22 120 2,640 32%
Platinum 5,000 50 130 6,500 30%
Diamond 10,000 95 140 13,300 33%

Edit the numbers freely in src/data/plans.ts.


🏗️ Build

npm run build        # tsc + vite build → dist/
npm run preview      # preview the production build

⚠️ Disclaimer

Meti is a demonstration project for learning and portfolio purposes only. It is not a real investment platform and must not be operated as one. Do not deploy it to solicit or accept real deposits — promising fixed daily returns on deposits is, in the real world, a form of investment fraud and is illegal in most countries, Georgia included.

About

Educational full-stack demo of an investment-platform UI — React + TypeScript + Express + Prisma, bilingual (ka/en). A learning/portfolio project — not a real financial service, no real money.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages