Web3 Crypto Auth (MetaMask)

Programowanie stron internetowych 1133 PLN
Praca 5 z 13
Gotowy szablon Web3: FastAPI + Web3 Crypto Auth (MetaMask) + PostgreSQL + Docker

Nowoczesne, wysokowydajne jądro REST API, zaprojektowane zgodnie z zasadami Clean Architecture z integracją uwierzytelniania przez podpis kryptograficzny portfeli Web3 (EVM / MetaMask / WalletConnect). Projekt jest w pełni konteneryzowany za pomocą Dockera i zoptymalizowany do natychmiastowego lokalnego wdrożenia lub produkcyjnego deploymentu.

Ten szablon został opracowany jako uniwersalna, bezpieczna i architektonicznie dopracowana podstawa (System Zarządzania Użytkownikami) do tworzenia platform P2P, usług arbitrażowych, kryptowalutowych rynków, rozwiązań Web3 SaaS oraz zdecentralizowanych aplikacji (dApps). Całkowicie eliminuje potrzebę pisania podstawowej logiki autoryzacji i profili od zera.

Cechy architektoniczne i stos technologiczny

1. Bezhasłowe uwierzytelnianie Web3: Zamiast klasycznego, podatnego na ataki połączenia email/hasło, zrealizowano kryptograficzną weryfikację publicznego klucza użytkownika na podstawie podpisu wiadomości (format EIP-191). Weryfikacja odbywa się natywnie na backendzie za pomocą bibliotek eth-account i eth-keys, co gwarantuje maksymalne bezpieczeństwo sesji.

2. Clean Architecture i Pydantic v2: Wyraźny podział odpowiedzialności warstw. Modele SQLAlchemy są całkowicie izolowane, praca z bazą danych oparta jest na niezależnych routerach, a walidacja danych wejściowych i wyjściowych opiera się na schematach Pydantic v2 (bez ręcznego zbierania słowników JSON w kontrolerach).

3. Standard UUID v7: Wszystkie podrzędne i powiązane encje systemu (profile, konfiguracje użytkowników) korzystają z nowoczesnych, uporządkowanych czasowo identyfikatorów UUID v7. To uniemożliwia atakującym przeszukiwanie inkrementalnych ID, ukrywa rzeczywiste rozmiary danych systemu i przyspiesza indeksację w PostgreSQL.

4. Atomowość i Lazy Initialization danych: Profile i konfiguracje systemowe są ściśle powiązane z użytkownikiem przez kaskadowe powiązania (ondelete="CASCADE"). Tworzenie pustego anonimowego profilu oraz domyślnych ustawień interfejsu odbywa się atomowo w ramach jednej transakcji w momencie pierwszego połączenia portfela, co eliminuje stan wyścigu danych (Race Condition).

5. Pełna automatyzacja Dockera i CI/CD: Infrastruktura jest całkowicie izolowana od systemu hosta. Skrypt wdrożeniowy automatycznie kontroluje dostępność PostgreSQL, a dyrektywa create_all niezawodnie inicjalizuje strukturę bazy danych. Zrealizowano automatyczny izolowany skrypt siewu bazy danych, który przy starcie kontenera sprawdza i wymusza tworzenie lub aktualizację praw superadministratora dla określonego administracyjnego portfela Web3.

6. Optymalizacja dla generatorów typów: Specyfikacja Swagger. Trasy REST są w pełni gotowe do bezkonfliktowej automatycznej generacji rygorystycznych typów frontendowych (TypeScript) za pomocą narzędzi Orval lub OpenAPI-codegen.

Dostępna specyfikacja REST punktów końcowych

Uwierzytelnianie:
POST /api/v1/auth/connect: Weryfikacja podpisu kryptograficznego wiadomości i wydanie bezterminowego tokena sesji JWT Bearer. Automatycznie rejestruje nowy portfel, jeśli nie ma go w bazie.
Zarządzanie kontem Web3 (Dostęp za pomocą JWT):
GET /api/v1/users/me: Uzyskanie pełnych informacji o bieżącym portfelu (status, ocena, sloty, limity transakcji).
PUT /api/v1/users/me: Aktualizacja publicznych metadanych konta (display_name).
Zarządzanie profilami (Dostęp za pomocą JWT):
GET /api/v1/profiles/me: Uzyskanie anonimowego profilu (biografia, linki społecznościowe, extra_data).
PUT /api/v1/profiles/me: Edytowanie danych profilu.
Konfiguracje systemowe (Dostęp za pomocą JWT):
GET /api/v1/configs/me: Uzyskanie indywidualnych ustawień (motyw interfejsu, język, strefa czasowa, parametry prywatności i powiadomienia JSON).
PUT /api/v1/configs/me: Zmiana systemowych konfiguracji interfejsu portfela.
Monitorowanie: GET /health: Healthcheck systemu dla load balancerów produkcyjnych.

Szybki start dla lokalnego rozwoju

Wdrożenie izolowanej ekosystemu jedną komendą z automatycznym pobieraniem zmian (Hot-Reload):

docker compose up --build