No description
- TypeScript 84.1%
- JavaScript 7%
- Python 4%
- HTML 1.8%
- Shell 1.3%
- Other 1.7%
|
All checks were successful
CI / Python SDK (push) Successful in 35s
CI / Secrets Scan (push) Successful in 17s
CI / Telegram Mini App (push) Successful in 2m3s
CI / Contracts (push) Successful in 2m12s
CI / Prisma Migrate Gate (push) Successful in 1m46s
React Doctor / React Doctor / App (push) Successful in 3m39s
CI / App (push) Successful in 7m22s
CI / API (push) Successful in 7m51s
Deploy EuropaTech / Production Release Gate (push) Successful in 13m32s
Deploy EuropaTech / SEO Health Gate (push) Successful in 7s
Deploy EuropaTech / Deploy API to Hetzner (push) Successful in 1m2s
Deploy EuropaTech / Deploy Static to Hetzner (push) Successful in 3m55s
|
||
|---|---|---|
| .claude | ||
| .forgejo | ||
| .githooks | ||
| .husky | ||
| .seo-agent | ||
| api | ||
| app | ||
| contracts | ||
| docs | ||
| infra | ||
| loadtest | ||
| mcp | ||
| packages | ||
| patches | ||
| qa/api-tests | ||
| scripts | ||
| shared | ||
| skills | ||
| tg | ||
| widget | ||
| workers | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .gitnexusignore | ||
| .ignore | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| .secretsignore | ||
| BACKLOG.md | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile.ci | ||
| Dockerfile.ci.dockerignore | ||
| DRIFT_CHECK_REPORT.md | ||
| ecosystem.production.cjs | ||
| eslint.config.js | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| SECURITY.md | ||
| tsconfig.base.json | ||
| tsconfig.json | ||
EuropaTech
Collective real estate investment platform for tokenized premium European properties — enabling fractional ownership, P2P trading, and on-chain yield distribution via Base L2.
Monorepo layout
| Package | Description | Stack |
|---|---|---|
app/ |
Main web application (SPA + SSR) | React 19, Vite 8, Tailwind 4, TypeScript |
api/ |
REST API + WebSocket server | Express 5, Prisma 7, PostgreSQL, Redis, TypeScript |
tg/ |
Telegram Mini App | React 19, Vite 8, @telegram-apps/sdk |
shared/ |
Shared TypeScript interfaces across packages | TypeScript |
contracts/ |
Solidity smart contracts on Base mainnet | Hardhat 2, OpenZeppelin 5, ethers 6 |
widget/ |
Embeddable investment widget | — |
packages/sdk-js/ |
Official JS/TS SDK (@europatech/sdk) |
TypeScript, dual ESM/CJS |
packages/sdk-python/ |
Official Python SDK (europatech) |
Python ≥ 3.9, httpx |
Key features
Investment & Finance
- Tokenized real estate objects with monthly income distribution
- Investor cabinet — portfolio, analytics, tax reports, income history
- P2P marketplace — secondary share trading with on-chain escrow
- IBAN payout system with admin review
- Partner & referral program (Bronze / Silver / Gold tiers)
- MiCA compliance checks and annual limit enforcement
Blockchain
- EURT (ERC-20) — EUR-pegged stablecoin on Base mainnet (
0xF0ff21C0a3De78a4503A77340079f3d4dad3d373) - EuropaShareToken (ERC-1155) — property share NFTs
- EuropaYieldVault (ERC-4626), EuropaLending, EuropaBridge (LayerZero)
- SIWE (Sign-In with Ethereum) wallet authentication
Authentication
- Email/password, Google OAuth, Apple Sign-In
- SIWE (wallet), WebAuthn (passkeys)
- Two-factor authentication (TOTP, SMS via Twilio)
Admin Panel
- Full management dashboard — users, KYC (SumSub), payments (Stripe, NOWPayments)
- Audit log, event management, news/blog editor, support tickets
- Built-in IMAP email client
AI
- AI assistant powered by Google Gemini and Anthropic Claude
- RAG-based knowledge base for property analysis
- Document and video analysis via AI SDK (
@ai-sdk/google,@anthropic-ai/sdk)
Notifications
- Push (Firebase Cloud Messaging), transactional email (Resend)
- Telegram bot + Mini App, in-app smart notifications
- Weekly digest and drip campaigns
Internationalisation
- 13 languages: AR, DE, EN, ES, FR, HI, ID, IT, JA, KO, PT, RU, ZH via i18next
Infrastructure
| Service | Provider | URL |
|---|---|---|
| Frontend | Hetzner 89.167.108.198 — nginx static |
https://europa-tech.org |
| API | Hetzner 89.167.108.198 — PM2 |
https://api.europa-tech.org |
| Telegram Mini App | Hetzner 89.167.108.198 — nginx static |
https://tg.europa-tech.org |
| Widget | Hetzner 89.167.108.198 — nginx static |
https://widget.europa-tech.org |
| Docs | Hetzner 89.167.108.198 — nginx static |
https://docs.europa-tech.org |
| Database | Hetzner local — PostgreSQL (Docker) | — |
| Cache | Hetzner local — Redis (Docker) | — |
| Files | Hetzner local files service | https://files.europa-tech.org |
Prerequisites
- Node.js
>=18.0.0 - pnpm
10.33.0—npm install -g pnpm@10.33.0 - PostgreSQL and Redis (local or via Docker)
- (Contracts only) Hardhat — installed as a workspace dev dependency
Development setup
git clone <repo-url>
cd europa-tech
pnpm install
# Copy and fill in env files
cp api/.env.example api/.env
# Apply migrations and seed
pnpm db:migrate
pnpm db:seed
# Start API + frontend in parallel
pnpm dev
Individual targets:
pnpm dev:app # frontend only (localhost:5173)
pnpm dev:api # API only (localhost:3001)
Common scripts
| Command | Description |
|---|---|
pnpm dev |
Start API + app in parallel (watch mode) |
pnpm build |
Production build — API + app in parallel |
pnpm test |
Run all tests (API + app vitest) |
pnpm test:api |
API unit tests only |
pnpm test:app |
App unit tests only |
pnpm test:e2e |
Playwright end-to-end tests |
pnpm test:security |
API security test suite |
pnpm lint |
ESLint across all packages |
pnpm lint:fix |
ESLint with auto-fix |
pnpm format |
Prettier — write all ts/tsx/js/jsx/json/css/md |
pnpm db:migrate |
Apply pending Prisma migrations |
pnpm db:seed |
Seed the database |
pnpm db:studio |
Open Prisma Studio |
pnpm i18n:check |
Check i18n key completeness across 13 languages |
pnpm loadtest:smoke |
k6 smoke load test |
pnpm loadtest |
k6 standard load test |
pnpm loadtest:stress |
k6 stress load test |
Deploy
Production target is Hetzner 89.167.108.198. The script runs local gates (TypeScript, ESLint, Vitest, i18n completeness, frontend build) before pushing and deploying remotely via SSH.
bash scripts/deploy.sh "feat: description of change"
See docs/DEPLOYMENT.md for the full pipeline, environment variable requirements, and rollback procedure.
Smart contracts
cd contracts
npx hardhat test # run all tests
npx hardhat run scripts/deploy.ts --network baseSepolia # testnet deploy
npx hardhat run scripts/deploy.ts --network base # mainnet deploy
Base mainnet chainId: 8453. All contracts verified on BaseScan.
SDKs
JavaScript / TypeScript (@europatech/sdk)
npm install @europatech/sdk
Python (europatech)
pip install europatech
Documentation
| Doc | Path |
|---|---|
| Architecture | docs/ARCHITECTURE.md |
| Getting started | docs/GETTING-STARTED.md |
| Development guide | docs/DEVELOPMENT.md |
| Testing | docs/TESTING.md |
| Configuration | docs/CONFIGURATION.md |
| API reference | docs/API.md |
| Deployment | docs/DEPLOYMENT.md |
License
Proprietary. All rights reserved.