Skip to content

vorluno/Vorluno-Form

Repository files navigation

🌐 Live Demo β€’ ✨ Features β€’ 🧱 Tech Stack

Intake Form Premium

Intake Form Premium
Captura de requisitos + UX clara


πŸš€ Vorluno Contact Form

Modern, production-ready contact form built for CapRover deployment

.NET React Docker CapRover License

Features β€’ Quick Start β€’ Deployment β€’ Documentation


πŸ“‹ Overview

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.

✨ Features

Frontend

  • 🎨 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

Backend

  • ⚑ 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 /healthz endpoint
  • πŸ“ Structured Logging: Production-ready logging configuration

DevOps

  • 🐳 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

πŸ“ Project 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

πŸš€ Quick Start

Prerequisites

Local Development

1. Clone and Setup

git clone https://github.com/YOUR_USERNAME/vorluno-contact-form.git
cd vorluno-contact-form

2. Configure Environment

# 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.json

3. Run Backend

cd src/api
dotnet restore
dotnet run

Backend will be available at https://localhost:7150

  • Swagger UI: https://localhost:7150/swagger (dev only)
  • Health Check: https://localhost:7150/healthz

4. Run Frontend (New Terminal)

cd src/web
npm install
npm run dev

Frontend will be available at http://localhost:5174

Docker Testing

# 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-test

🚒 Deployment

CapRover (Recommended)

One-click deployment to CapRover with automatic SSL via Let's Encrypt

  1. Create app in CapRover

    # Or via dashboard: Apps > Create New App > "contacto"
  2. Configure environment variables (see .env.example)

    • Email__Brevo__ApiKey (required)
    • Email__From (required)
    • Email__To (required)
    • Email__Logo__Url (required)
  3. Deploy

    # Option A: From Git (Automatic)
    # Configure in CapRover: Deployment > Deploy from Git
    
    # Option B: Manual push
    caprover deploy -a contacto
  4. Enable HTTPS

    • Go to HTTP Settings
    • Add custom domain: contacto.vorluno.dev
    • Enable HTTPS & Force HTTPS
    • CapRover handles SSL cert automatically

πŸ”§ Configuration

Environment Variables

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.png

Optional:

Email__Ack__From=contacto@vorluno.dev
GoogleSheets__WebhookUrl=https://...
GoogleSheets__Token=secret

Email Configuration (Brevo)

Before deploying, configure Brevo:

  1. Verify domain vorluno.dev in Brevo
  2. 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
  3. Verify sender: contacto@vorluno.dev

πŸ› οΈ Tech Stack

Backend

  • Framework: ASP.NET Core 9.0
  • Language: C# 12
  • Email: Brevo SDK (brevo-csharp)
  • Validation: Data Annotations
  • Compression: Brotli + Gzip

Frontend

  • Framework: React 18
  • Build Tool: Vite 5
  • Validation: React Hook Form + Zod
  • Styling: TailwindCSS (implicit via inline styles)
  • HTTP Client: Axios

DevOps

  • Container: Docker (multi-stage)
  • Base Image: Alpine Linux
  • Orchestration: CapRover
  • CI/CD: GitHub Actions ready

🀝 Contributing

This is a private Vorluno project. For internal team members:

  1. Create a feature branch from master
  2. Make your changes
  3. Submit a PR with description
  4. Wait for review

Commit Convention

Follow Conventional Commits:

feat: add Google Sheets integration
fix: resolve email template rendering issue
docs: update deployment guide
chore: bump dependencies

πŸ“ License

MIT License - see LICENSE file for details.


πŸ”— Links


πŸ™ Acknowledgments


Made with πŸ’œ by Vorluno

Transformando ideas en realidad

About

Enterprise-grade contact form for Vorluno - ASP.NET Core 9 + React 18 + Vite. CapRover ready with Docker, Brevo email integration, and Google Sheets support.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors