feat: user module, mail service, Redis caching, wallet generation, exception filter, trust section, governance events#169
Merged
Devsol-01 merged 3 commits intoDevsol-01:mainfrom Feb 23, 2026
Conversation
- Set up Prisma ORM with User model and PostgreSQL datasource - Add UserModule with CRUD endpoints (GET /users/me, GET /users/:id, PATCH /users/me, DELETE /users/me) protected by JWT auth guard - Add AuthModule with Passport JWT strategy for route protection - Add MailModule with SMTP transport and Handlebars templates, including sendWelcomeEmail service method - Add RedisCacheModule with global cache configuration and apply CacheInterceptor to the health endpoint as proof of concept - Update configuration and env validation for mail variables Closes Devsol-01#132, closes Devsol-01#133, closes Devsol-01#134
|
Someone is attempting to deploy a commit to the devsol-01's projects Team on Vercel. A member of the Team first needs to authorize it. |
added 2 commits
February 23, 2026 13:37
…-redis # Conflicts: # backend/package-lock.json # backend/package.json # backend/src/app.module.ts # backend/src/config/configuration.ts # backend/src/config/env.validation.ts
…nance events - Add POST /blockchain/wallets/generate endpoint with Stellar keypair generation via StellarService (Devsol-01#137) - Standardize AllExceptionsFilter to return { success, statusCode, message, timestamp, path } and suppress stack traces in production (Devsol-01#124) - Add "Why Trust Nestera?" section component with teal checkmark icons and 4 trust points, integrated into LandingPage (Devsol-01#93) - Add structured governance event logging with ProposalCreated, VoteCast, ProposalQueued, ProposalExecuted, and ProposalCanceled event types, replacing inline publish calls (Devsol-01#164) - Fix broken duplicate imports in LandingPage.tsx Closes Devsol-01#137, closes Devsol-01#124, closes Devsol-01#93, closes Devsol-01#164
6c0e483 to
312d1a7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements 7 issues across the backend, frontend, and smart contracts:
Backend
User Module (Build the User Module (CRUD) #132):
UserModule,UserController, andUserServicewith CRUD endpoints (GET /users/me,GET /users/:id,PATCH /users/me,DELETE /users/me). All routes protected byJwtAuthGuard. Password hashes excluded from all responses via Prismaselect. IncludesUpdateUserDtowith class-validator decorators.Email Service (Integrate Email Sending Service #133):
MailModuleconfigured with@nestjs-modules/mailerusing async SMTP transport. IncludesMailService.sendWelcomeEmail()and a Handlebars welcome email template.Redis Caching (Implement Redis Caching #134):
RedisCacheModuleusing@nestjs/cache-managerwithcache-manager-redis-yet. Globally configured with Redis URL fallback to in-memory.CacheInterceptorapplied to health endpoint.Stellar Wallet Generation (Endpoint for Stellar Wallet Generation #137):
POST /blockchain/wallets/generateendpoint withgenerateKeypair()method inStellarServiceusingKeypair.random()from@stellar/stellar-sdk.Standardize Exception Filter (Standardize Global Exception Filter #124): Updated
AllExceptionsFilterto return{ success, statusCode, message, timestamp, path }. Validation arrays are joined. Stack traces suppressed from client responses.Frontend
WhyTrust.tsxcomponent with 4 trust items (Transparent, Non-Custodial, Low Fees, No Penalty), teal checkmark icons, dark theme cards. Integrated into LandingPage between HowItWorks and SavingsProducts. Also fixed duplicate imports in LandingPage.tsx.Smart Contracts
governance_eventsmodule with structured event types (ProposalCreated,VoteCast,ProposalQueued,ProposalExecuted,ProposalCanceled) and emit helpers. Replaced all inlineenv.events().publish()calls in governance.rs with structured emitters. Indexed by topic for frontend consumption.Supporting Changes
Test Plan
npx prisma migrate devwith PostgreSQL to verify schemaGET /api/users/mereturns 401 without JWTGET /api/users/mereturns user data (no password) with valid JWTPATCH /api/users/meupdates name/bioDELETE /api/users/meremoves userGET /api/healthcaches with Redis (or in-memory fallback)POST /api/blockchain/wallets/generatereturns publicKey and secretKeysuccess: falsecargo testpasses for governance event changesCloses #132, closes #133, closes #134, closes #137, closes #124, closes #93, closes #164