π Live Demo β’ β¨ Features β’ π§± Tech Stack
Intake Form Premium
Captura de requisitos + UX clara
Modern, production-ready contact form built for CapRover deployment
Features β’ Quick Start β’ Deployment β’ Documentation
Enterprise-grade contact form application for Vorluno, featuring a React frontend with Vite and ASP.NET Core backend. Optimized for CapRover deployment with Docker, complete with email notifications via Brevo and optional Google Sheets integration.
- π¨ Modern UI: Vorluno brand colors (#7C3AED violet, #06B6D4 cyan)
- β Form Validation: React Hook Form + Zod schema validation
- π± Responsive Design: Mobile-first with glassmorphism effects
- βΏ Accessible: ARIA labels, keyboard navigation, screen reader support
- π Offline Support: Automatic retry queue when connection returns
- π i18n Ready: Spanish language support
- β‘ ASP.NET Core 9: Latest .NET with minimal APIs
- π§ Email Service: Brevo (SendinBlue) transactional emails
- π Security: Non-root Docker user, security headers, input validation
- π Google Sheets: Optional webhook integration for lead tracking
- π₯ Health Checks: Built-in
/healthzendpoint - π Structured Logging: Production-ready logging configuration
- π³ Docker: Multi-stage build, Alpine Linux (~90MB final image)
- π’ CapRover Ready: One-click deployment with captain-definition
- π Environment Variables: All secrets via env vars, zero hardcoding
- π¦ Optimized: Response compression (Brotli + Gzip), static file caching
- π CI/CD Ready: GitHub Actions compatible structure
vorluno-contact-form/
βββ src/
β βββ api/ # ASP.NET Core Backend
β β βββ Controllers/ # API Controllers
β β βββ Models/ # Data models
β β βββ Services/ # Business logic (Email, etc.)
β β βββ wwwroot/ # Static files (built frontend + assets)
β β βββ Program.cs # Application entry point
β β βββ appsettings.json.example # Config template
β β βββ appsettings.Production.json
β βββ web/ # React + Vite Frontend
β βββ src/
β β βββ components/ # React components
β β βββ lib/ # Utilities, API client, schemas
β βββ public/ # Static assets
β βββ package.json
βββ .github/ # GitHub templates
β βββ ISSUE_TEMPLATE/
β βββ PULL_REQUEST_TEMPLATE.md
βββ Dockerfile # Multi-stage production build
βββ captain-definition # CapRover deployment config
βββ .env.example # Environment variables template
βββ LICENSE # MIT License
- .NET 9 SDK
- Node.js 20+
- Brevo account with API key
- (Optional) Docker for containerized testing
git clone https://github.com/YOUR_USERNAME/vorluno-contact-form.git
cd vorluno-contact-form# Copy example config
cp src/api/appsettings.json.example src/api/appsettings.json
# Edit with your Brevo API key
# Replace YOUR_BREVO_API_KEY_HERE in appsettings.jsoncd src/api
dotnet restore
dotnet runBackend will be available at https://localhost:7150
- Swagger UI:
https://localhost:7150/swagger(dev only) - Health Check:
https://localhost:7150/healthz
cd src/web
npm install
npm run devFrontend will be available at http://localhost:5174
# Build image
docker build -t vorluno-contacto:test .
# Run container
docker run -d -p 8080:8080 \
-e Email__Brevo__ApiKey="your-key" \
-e Email__From="contacto@vorluno.dev" \
-e Email__To="your-email@example.com" \
-e Email__Logo__Url="https://vorluno.dev/assets/vorluno-logo.png" \
--name contacto-test \
vorluno-contacto:test
# Test health check
curl http://localhost:8080/healthz
# View logs
docker logs -f contacto-test
# Cleanup
docker stop contacto-test && docker rm contacto-testOne-click deployment to CapRover with automatic SSL via Let's Encrypt
-
Create app in CapRover
# Or via dashboard: Apps > Create New App > "contacto" -
Configure environment variables (see
.env.example)Email__Brevo__ApiKey(required)Email__From(required)Email__To(required)Email__Logo__Url(required)
-
Deploy
# Option A: From Git (Automatic) # Configure in CapRover: Deployment > Deploy from Git # Option B: Manual push caprover deploy -a contacto
-
Enable HTTPS
- Go to HTTP Settings
- Add custom domain:
contacto.vorluno.dev - Enable HTTPS & Force HTTPS
- CapRover handles SSL cert automatically
All configuration via environment variables. See .env.example for complete list.
Required:
Email__Brevo__ApiKey=xkeysib-...
Email__From=contacto@vorluno.dev
Email__To=vorluno@gmail.com
Email__Logo__Url=https://vorluno.dev/assets/vorluno-logo.pngOptional:
Email__Ack__From=contacto@vorluno.dev
GoogleSheets__WebhookUrl=https://...
GoogleSheets__Token=secretBefore deploying, configure Brevo:
- Verify domain
vorluno.devin Brevo - Add DNS records:
- SPF:
v=spf1 include:spf.sendinblue.com ~all - DKIM: (provided by Brevo)
- DMARC:
v=DMARC1; p=none; rua=mailto:postmaster@vorluno.dev
- SPF:
- Verify sender:
contacto@vorluno.dev
- Framework: ASP.NET Core 9.0
- Language: C# 12
- Email: Brevo SDK (brevo-csharp)
- Validation: Data Annotations
- Compression: Brotli + Gzip
- Framework: React 18
- Build Tool: Vite 5
- Validation: React Hook Form + Zod
- Styling: TailwindCSS (implicit via inline styles)
- HTTP Client: Axios
- Container: Docker (multi-stage)
- Base Image: Alpine Linux
- Orchestration: CapRover
- CI/CD: GitHub Actions ready
This is a private Vorluno project. For internal team members:
- Create a feature branch from
master - Make your changes
- Submit a PR with description
- Wait for review
Follow Conventional Commits:
feat: add Google Sheets integration
fix: resolve email template rendering issue
docs: update deployment guide
chore: bump dependencies
MIT License - see LICENSE file for details.
- Production: https://contacto.vorluno.dev
- Health Check: https://contacto.vorluno.dev/healthz
- Brevo Dashboard: https://app.brevo.com
- CapRover: https://caprover.com
- Built with ASP.NET Core
- Styled with React
- Deployed on CapRover
- Emails via Brevo
Made with π by Vorluno
Transformando ideas en realidad
