Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/gus-16710/invitations/llms.txt

Use this file to discover all available pages before exploring further.

Invitaciones Digitales uses a fully automated deployment pipeline: every push to the master branch triggers a GitHub Actions workflow that installs dependencies, runs next build, and uploads the resulting static files directly to the production web server over FTP. There is no manual step required after a code change is merged — the site is live within minutes.

Build process

The project uses a single build script defined in package.json:
package.json (scripts)
{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  }
}
Running npm run build executes next build, which — because output: "export" is set in next.config.js — generates a fully static export instead of a server-rendered application. All output is written to the out/ directory:
out/
├── index.html                          # Root landing page
├── bodas/
│   └── diana-ernesto/
│       └── index.html                  # Wedding invitation page
├── quinces/
│   └── daniela/
│       └── index.html                  # Quinceañera invitation page
├── _next/
│   ├── static/
│   │   ├── css/                        # Compiled Tailwind CSS bundles
│   │   └── chunks/                     # JavaScript code-split chunks
│   └── ...
└── img/                                # Copied from public/img/
Every invitation URL becomes a self-contained index.html file inside its own directory (due to trailingSlash: true). The entire out/ folder is a portable, server-independent website.

GitHub Actions workflow

The deployment workflow is defined in .github/workflows/master.yml. It runs on every push to master, builds the site, and pushes the out/ directory to the FTP server in a single job.
.github/workflows/master.yml
name: 🚀 Deploy static website
on:
  push:
    branches:
      - master
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 🚚 Descargar código
        uses: actions/checkout@v4
      - name: ➕ Instalar dependencias
        run: npm ci
      - name: ⭐ Build del sitio
        run: npm run build
      - name: 📂 Subir por FTP
        uses: SamKirkland/FTP-Deploy-Action@v4.3.5
        with:
          server: ftp.unaideamas.com
          username: ${{ secrets.ftp_username }}
          password: ${{ secrets.ftp_password }}
          local-dir: out/
          server-dir: /

Workflow steps explained

StepActionWhat it does
Descargar códigoactions/checkout@v4Checks out the full repository onto the runner
Instalar dependenciasnpm ciInstalls exact dependency versions from package-lock.json
Build del sitionpm run buildRuns next build and writes static files to out/
Subir por FTPSamKirkland/FTP-Deploy-Action@v4.3.5Syncs out/ to the root of ftp.unaideamas.com
The SamKirkland/FTP-Deploy-Action action performs an incremental sync — it only uploads files that have changed since the last deployment, keeping transfer times short.
The site is served at invitaciones.unaideamas.com. The domain and SSL certificate are configured on the FTP hosting server side — no changes to the repository or workflow are needed to update the domain.
The top of master.yml contains a large commented-out block. This is a previous two-job version of the workflow that separated building and deploying into distinct jobs using actions/upload-artifact and actions/download-artifact to pass the out/ directory between them. It was replaced by the current single-job flow, which is simpler and avoids the overhead of artifact storage for a build this size. The commented block is kept as a reference in case a multi-job approach is needed in the future (e.g., to add a test job between build and deploy).

Setting up GitHub Secrets

The FTP credentials are stored as encrypted GitHub Secrets and injected into the workflow at runtime. You must add them once per repository before the workflow can deploy successfully.
1

Open your repository settings

Navigate to your GitHub repository, then click the Settings tab in the top navigation bar.
2

Go to Secrets and variables

In the left sidebar, expand Secrets and variables and click Actions.
3

Add ftp_username

Click New repository secret. Set the name to ftp_username and the value to your FTP account username for ftp.unaideamas.com. Click Add secret.
4

Add ftp_password

Click New repository secret again. Set the name to ftp_password and the value to your FTP account password. Click Add secret.
5

Verify the workflow

Push any commit to master (or re-run the latest workflow manually from the Actions tab) and confirm the 📂 Subir por FTP step completes without errors.

Manual deployment

If you need to deploy without relying on GitHub Actions — for example, during local testing or when the CI runner is unavailable — you can build and upload the site manually.
1

Build the static export

Run the build command from the project root:
npm run build
This generates the out/ directory with all static assets.
2

Upload via FTP

Connect to ftp.unaideamas.com with your FTP client (e.g., FileZilla, Cyberduck) using your ftp_username and ftp_password credentials. Upload the contents of the out/ directory (not the folder itself) to the server root (/).
3

Verify the live site

Open https://invitaciones.unaideamas.com in a browser and confirm the latest changes are reflected.

Build docs developers (and LLMs) love