No description
  • TypeScript 84.1%
  • JavaScript 7%
  • Python 4%
  • HTML 1.8%
  • Shell 1.3%
  • Other 1.7%
Find a file
europatech2026 cc184ed3b0
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
[CL-W14] LOW-пачка №2: cooling-off double-pay, unsigned webhook кеш, idempotency на vault deposit (#518)
2026-06-11 11:00:18 +00:00
.claude chore(infra): remove all legacy Railway and GitHub references, migrate fully to self-hosted Hetzner/PM2 and Forgejo 2026-05-25 13:03:44 +03:00
.forgejo [CL-QA-API] QA: тестовый suite REST API (Playwright+TS+Zod) (#502) 2026-06-10 18:44:48 +00:00
.githooks chore: add pre-commit hook to block direct master commits 2026-02-19 18:50:24 +03:00
.husky [CL-W9-SEC] SEC-1: утёкший Forgejo PAT удалён из SKILL.md (токен отозван+ротирован); SEC-2: восстановлен CSP-плейсхолдер + guard 2026-06-10 05:49:39 +03:00
.seo-agent [CL-COMP] Исправление наложения элементов в мобильном Hero-разделе и оптимизация контрастности в SocialProofBar. Кнопка Room Explorer и бейджи обернуты в единый flex-контейнер для предотвращения вертикального перекрытия при адаптивном переносе. Начальная прозрачность в SocialProofBar изменена с 0.4 до 0 для успешного прохождения проверок контрастности Lighthouse/Axe на этапе загрузки страницы без CLS. 2026-06-03 13:09:42 +03:00
api [CL-W14] LOW-пачка №2: cooling-off double-pay, unsigned webhook кеш, idempotency на vault deposit (#518) 2026-06-11 11:00:18 +00:00
app [CL-W14] LOW-пачка №2: cooling-off double-pay, unsigned webhook кеш, idempotency на vault deposit (#518) 2026-06-11 11:00:18 +00:00
contracts fix(contracts): align EuropaBridgeLZ operator audit tooling (#413) 2026-06-08 11:19:59 +00:00
docs [CL-W12C] Группировка services: compliance/ + defi/ (barrel-шимы) (#504) 2026-06-10 20:28:56 +00:00
infra [CL-W9-SEC] SEC-1: утёкший Forgejo PAT удалён из SKILL.md (токен отозван+ротирован); SEC-2: восстановлен CSP-плейсхолдер + guard 2026-06-10 05:49:39 +03:00
loadtest [CL-AUDIT-PRELAUNCH] docs+loadtest(tails): GDPR Art.30/35 + k6 ws-flash и financial-burst 2026-06-06 20:42:51 +03:00
mcp fix: patch audited transitive dependencies 2026-05-10 01:01:21 +00:00
packages chore(infra): remove all legacy Railway and GitHub references, migrate fully to self-hosted Hetzner/PM2 and Forgejo 2026-05-25 13:03:44 +03:00
patches fix: use company logo for EURT token in LiFi widget 2026-02-24 01:14:03 +03:00
qa/api-tests [CL-W14] LOW-пачка №2: cooling-off double-pay, unsigned webhook кеш, idempotency на vault deposit (#518) 2026-06-11 11:00:18 +00:00
scripts [CL-CAB] fix: исправление перенаправления stderr в hetzner-deploy-api.sh 2026-06-11 13:32:46 +03:00
shared [CL-DOCS-UPDATE] docs: полная регенерация документации через /gsd-docs-update (#72) 2026-05-18 21:21:06 +00:00
skills [CL-W9-SEC] SEC-1: утёкший Forgejo PAT удалён из SKILL.md (токен отозван+ротирован); SEC-2: восстановлен CSP-плейсхолдер + guard 2026-06-10 05:49:39 +03:00
tg feat(tg): enrich and modernize telegram app branding, buttons, cards, and tab selectors 2026-06-09 16:34:45 +03:00
widget fix(widget): use live api base for click tracking 2026-05-22 18:54:38 +03:00
workers [CL-AUDIT-89-V3] полный E2E audit europa-tech: ops-critical + cleanup batch 2026-05-18 12:23:41 +03:00
.dockerignore Fix Docker build: remove playwright, add .dockerignore 2026-02-16 17:40:53 +03:00
.env.example [CL-AUDIT-HARDEN-20260531] sec+fix: BE-005 tax-harvest NaN guard + SEC-002 minter plaintext warning 2026-05-31 14:03:56 +03:00
.gitattributes [CL-AUDIT-W4] docs(vault): финал AUDIT-STATUS (W4 re-audit — 20 findings closed, A-7..A-14 open) + A-14 fix: *.mjs eol=lf 2026-06-07 02:27:10 +03:00
.gitignore [CL-AUDIT-W4] docs(vault): финал AUDIT-STATUS (W4 re-audit — 20 findings closed, A-7..A-14 open) + A-14 fix: *.mjs eol=lf 2026-06-07 02:27:10 +03:00
.gitleaks.toml fix(security): upgrade vulnerable deps + remove sk_test_ from gitleaks 2026-03-16 00:34:31 +03:00
.gitnexusignore chore: add repo search hygiene guards 2026-05-26 11:05:05 +03:00
.ignore chore: add repo search hygiene guards 2026-05-26 11:05:05 +03:00
.npmrc fix: move pnpm-only config out of npmrc 2026-05-23 13:35:56 +03:00
.prettierignore fix(api): перегенерировать swagger.json + добавить в prettierignore 2026-03-16 18:49:45 +03:00
.prettierrc chore: add ESLint, Prettier, husky + lint-staged 2026-02-22 21:28:14 +03:00
.secretsignore [CL-API] Add admin infrastructure health endpoint 2026-03-13 01:51:28 +03:00
BACKLOG.md docs: update ROADMAP.md and BACKLOG.md with Phase 3 Sprint 2 progress 2026-02-25 04:02:59 +03:00
CLAUDE.md chore(infra): remove all legacy Railway and GitHub references, migrate fully to self-hosted Hetzner/PM2 and Forgejo 2026-05-25 13:03:44 +03:00
docker-compose.yml chore: update pinned Docker image SHA digests for postgres and redis 2026-04-14 20:26:58 +03:00
Dockerfile.ci [CL-AUDIT] fix(i18n,ci): add ui.filePreview to en/tr; harden Dockerfile.ci 2026-05-29 22:34:06 +03:00
Dockerfile.ci.dockerignore [CL-AUDIT] fix(i18n,ci): add ui.filePreview to en/tr; harden Dockerfile.ci 2026-05-29 22:34:06 +03:00
DRIFT_CHECK_REPORT.md docs: on-chain safety drift check — critical role grants missing on Base mainnet 2026-06-05 20:57:40 +00:00
ecosystem.production.cjs fix(deploy): persist prod pm2 memory guard 2026-06-01 12:54:42 +00:00
eslint.config.js chore(lint): ignore generated artifact directories 2026-05-29 14:26:16 +03:00
package.json [CL-SEC] fix(deps): shell-quote>=1.8.4 — закрывает critical GHSA-w7jw-789q-3m8p (#495) 2026-06-09 15:53:54 +00:00
pnpm-lock.yaml [CL-SEC] fix(deps): shell-quote>=1.8.4 — закрывает critical GHSA-w7jw-789q-3m8p (#495) 2026-06-09 15:53:54 +00:00
pnpm-workspace.yaml fix: move pnpm-only config out of npmrc 2026-05-23 13:35:56 +03:00
README.md [CL-DOCS-UPDATE] docs: полная регенерация документации через /gsd-docs-update (#72) 2026-05-18 21:21:06 +00:00
SECURITY.md chore(infra): remove all legacy Railway and GitHub references, migrate fully to self-hosted Hetzner/PM2 and Forgejo 2026-05-25 13:03:44 +03:00
tsconfig.base.json Initial commit: Estiqo investment platform 2026-02-16 17:32:05 +03:00
tsconfig.json feat: Phase 3+4 — enforcement rules, hooks, skills, CLAUDE.md 2026-03-06 14:44:52 +03:00

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.0npm 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.