No description
  • TypeScript 91%
  • JavaScript 5%
  • Shell 1.4%
  • Solidity 1.3%
  • Python 0.8%
  • Other 0.4%
Find a file
andrei 7ef07bb27f
All checks were successful
CI / Telegram Mini App (push) Successful in 1m58s
CI / Python SDK (push) Successful in 27s
CI / Contracts (push) Successful in 2m44s
CI / Secrets Scan (push) Successful in 25s
CI / Prisma Migrate Gate (push) Successful in 1m50s
React Doctor / React Doctor / App (push) Successful in 3m9s
CI / API (push) Successful in 22m2s
CI / App (push) Successful in 22m43s
Deploy EuropaTech / Production Release Gate (push) Successful in 24m0s
Deploy EuropaTech / SEO Health Gate (push) Successful in 8s
Deploy EuropaTech / Deploy API to Hetzner (push) Successful in 1m18s
Deploy EuropaTech / Deploy Static to Hetzner (push) Successful in 8m7s
PIX-15481: remediate dependency advisories (#1205)
2026-08-03 10:45:02 +00:00
.claude chore: refresh europatech pattern skill 2026-07-04 06:06:42 +03:00
.forgejo/workflows [CL-1176] CI: прогон int-тестов против postgres-сервиса в API-job 2026-07-23 14:55:22 +03:00
.githooks chore: add pre-commit hook to block direct master commits 2026-02-19 18:50:24 +03:00
.github/agents chore(ci): remove stale GitHub deploy trigger 2026-07-02 19:58:56 +03:00
.husky docs: refresh i18n hook command 2026-07-03 15:16:56 +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 PIX-15481: remediate dependency advisories (#1205) 2026-08-03 10:45:02 +00:00
app PIX-15481: remediate dependency advisories (#1205) 2026-08-03 10:45:02 +00:00
contracts fix(contracts): reject EOA timelock bootstrap addresses 2026-07-17 02:33:28 +03:00
docs [CL-1176] type-honesty: канон ::text+toNum для всех NUMERIC из raw в payments/cron 2026-07-23 03:16:34 +03:00
europa-tech-app@fc97cbfd14 chore(ci): guard nested hook revival probe 2026-07-02 21:11:00 +03:00
infra/nginx fix: close mega-audit payment and runtime blockers 2026-07-10 12:36:13 +03:00
loadtest Remove legacy challenge provider plumbing 2026-06-30 06:44:32 +03:00
mcp PIX-15035: use liveness endpoint for deploy health probes (#1199) 2026-07-25 12:15:02 +00:00
packages fix(security): remediate elliptic nonce vulnerability 2026-07-19 09:59:45 +00:00
patches [CL-DEPS] Хвосты обновления зависимостей: lifi 4.3.1, ai 7, eslint vendor ignore (#1058) 2026-07-10 21:00:02 +00:00
qa/api-tests PIX-14350: восстановить rooms sharePrice smoke contract (#1163) 2026-07-20 06:45:02 +00:00
scripts PIX-15418: fix Sentry triage empty result handling (#1204) 2026-08-03 02:15:02 +00:00
shared [CL-DEPS] Обновление всех зависимостей workspace (#1053) 2026-07-10 16:30:01 +00:00
skills PIX-15418: fix Sentry triage empty result handling (#1204) 2026-08-03 02:15:02 +00:00
tests [CL-DEPS] Хвосты обновления зависимостей: lifi 4.3.1, ai 7, eslint vendor ignore (#1058) 2026-07-10 21:00:02 +00:00
tg fix: add idempotency key to TG balance purchases 2026-07-10 22:38:08 +03:00
tools/article-preview-generator chore(tools): vendor article preview renderer 2026-07-01 15:17:35 +03:00
widget [CL-DEPS] Обновление всех зависимостей workspace (#1053) 2026-07-10 16:30:01 +00:00
.dockerignore Fix Docker build: remove playwright, add .dockerignore 2026-02-16 17:40:53 +03:00
.env.example [PIX-12433] feat(telegram): TG_CHAT_ID/TG_PUBLIC_CHAT_ID (recover) (#1024) 2026-07-05 22:00:02 +00:00
.gitattributes [CL-SEC] deps: закрыть свежие high-advisories pnpm audit + LF-фикс elliptic supply-chain гейта 2026-07-22 11:40:15 +03:00
.gitignore Remove NotebookLM agent residue from EuropaTech repo 2026-06-30 08:54:03 +03:00
.gitleaks.toml fix(security): upgrade vulnerable deps + remove sk_test_ from gitleaks 2026-03-16 00:34:31 +03:00
.gitnexusignore chore(skills): drop vendored seo agent bundles 2026-07-02 22:25:20 +03:00
.ignore chore(skills): drop vendored seo agent bundles 2026-07-02 22:25:20 +03:00
.npmrc fix: move pnpm-only config out of npmrc 2026-05-23 13:35:56 +03:00
.prettierignore fix(security): remediate elliptic nonce vulnerability 2026-07-19 09:59:45 +00: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: refresh audit backlog metadata (#1125) 2026-07-17 05:36:26 +00:00
CLAUDE.md docs(gitnexus): sync counts after cache seed docs 2026-07-04 18:32:33 +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 fix: align local ci with pnpm 2026-07-03 08:06:47 +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: refresh Base mainnet drift report 2026-07-04 08:21:05 +03:00
ecosystem.config.cjs fix(deploy): переименование ecosystem.production.cjs в ecosystem.config.cjs для PM2 2026-06-25 00:23:11 +03:00
eslint.config.js fix(security): remediate elliptic nonce vulnerability 2026-07-19 09:59:45 +00:00
package.json chore(deps): monthly dependency update 2026-07 2026-07-19 09:21:58 +00:00
pnpm-lock.yaml PIX-15481: remediate dependency advisories (#1205) 2026-08-03 10:45:02 +00:00
pnpm-workspace.yaml PIX-15481: remediate dependency advisories (#1205) 2026-08-03 10:45:02 +00:00
README.md docs: use pnpm hardhat commands 2026-07-03 09:23:44 +03:00
SECURITY.md fix: align local ci with pnpm 2026-07-03 08:06:47 +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 focused on property-level economics, cash-flow visibility, and digital fractional access to premium European properties.

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

  • Property-level reporting with revenue, expense, and cash-flow visibility
  • Investor cabinet — portfolio, analytics, tax reports, and distribution history
  • Planned peer-to-peer resale path — secondary share trading when enabled, subject to buyer demand and platform rules
  • IBAN payout system with admin review
  • Partner & referral program (Bronze / Silver / Gold tiers)
  • MiCA-aware product controls and annual limit workflows

Blockchain

  • EURT (ERC-20) — EUR-pegged token used in supported payment and settlement flows on Base mainnet (0xF0ff21C0a3De78a4503A77340079f3d4dad3d373)
  • EuropaShareToken (ERC-1155) — digital property share records
  • 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

  • 14 UI languages: AR, DE, EN, ES, FR, HI, ID, IT, JA, KO, PT, RU, TR, 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 >=22
  • pnpm 10.34.2 — pinned by packageManager
  • 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 localized 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
pnpm test                                                     # run all tests
pnpm run deploy:sepolia                                      # testnet deploy
pnpm run deploy:mainnet                                      # 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.