Skip to content
codexa

Web apps · React

Wedding guest list

Keep the guest list, RSVPs, meal choices and table plan for the big day in one place.

Wedding guest list starter, as built from its own files
Starter screenshot captured from this template's own build at 1440×900. It shows the template as it ships, not output generated from a prompt.

What you get

A guest list for a wedding: every invited party with party size, meal choice and table, plus a running count of who is coming and who has not replied yet. The guests, meal options and RSVP states live in src/app.ts.

Files

Exactly what is copied into a new project: 12 files, nothing generated.

Raw data: GET /api/v1/templates/app-wedding-rsvp

src/app.ts
src/app.ts
import type { AppSpec } from "./types"; /** Everything this app shows. Edit freely. */export const app: AppSpec = {  "brand": "Ana & Tom",  "icon": "heart",  "storageKey": "ana-tom-guests-v1",  "entity": {    "singular": "Guest",    "plural": "Guests"  },  "title": "Guest list",  "subtitle": "Saturday 12 June 2027, Hollins Barn, Cotswolds",  "titleKey": "guest",  "statusKey": "rsvp",  "tones": {    "Invited": "neutral",    "Attending": "good",    "Maybe": "warn",    "Declined": "bad"  },  "views": [    "table",    "board"  ],  "fields": [    {      "key": "guest",      "label": "Guest or party",      "type": "text",      "required": true    },    {      "key": "email",      "label": "Email",      "type": "email",      "hideInTable": true    },    {      "key": "side",      "label": "Side",      "type": "select",      "options": [        "Ana",        "Tom",        "Both"      ]    },    {      "key": "partySize",      "label": "Party size",      "type": "number"    },    {      "key": "meal",      "label": "Meal",      "type": "select",      "options": [        "Lamb",        "Sea bass",        "Risotto (v)",        "Kids menu"      ]    },    {      "key": "table",      "label": "Table",      "type": "number"    },    {      "key": "rsvp",      "label": "RSVP",      "type": "select",      "options": [        "Invited",        "Attending",        "Maybe",        "Declined"      ]    },    {      "key": "notes",      "label": "Notes",      "type": "longtext",      "hideInTable": true    }  ],  "summary": [    {      "label": "Parties invited",      "kind": "count"    },    {      "label": "Guests attending",      "kind": "sum",      "field": "partySize",      "status": "Attending"    },    {      "label": "No reply yet",      "kind": "count",      "status": "Invited"    },    {      "label": "Declined",      "kind": "count",      "status": "Declined"    }  ],  "seed": [    {      "guest": "Margaret & John Ellis",      "email": "m.ellis@mail.com",      "side": "Ana",      "partySize": 2,      "meal": "Lamb",      "table": 1,      "rsvp": "Attending",      "notes": "Ana's grandparents. Step-free access please."    },    {      "guest": "The Okonjo family",      "email": "okonjo.family@mail.com",      "side": "Tom",      "partySize": 4,      "meal": "Kids menu",      "table": 4,      "rsvp": "Attending",      "notes": "Two children, ages 6 and 9."    },    {      "guest": "Rosa Lindgren",      "email": "rosa.lindgren@mail.com",      "side": "Ana",      "partySize": 1,      "meal": "Risotto (v)",      "table": 3,      "rsvp": "Attending",      "notes": "Vegetarian, nut allergy."    },    {      "guest": "Callum & Priya Shaw",      "email": "callum.shaw@mail.com",      "side": "Both",      "partySize": 2,      "meal": "Sea bass",      "table": 2,      "rsvp": "Maybe",      "notes": "Waiting on flights from Singapore."    },    {      "guest": "Felix Hartmann",      "email": "felix.h@mail.com",      "side": "Tom",      "partySize": 1,      "meal": "Lamb",      "table": 5,      "rsvp": "Invited",      "notes": ""    },    {      "guest": "Jo & Sam Whitaker",      "email": "jo.whitaker@mail.com",      "side": "Ana",      "partySize": 2,      "meal": "Sea bass",      "table": 3,      "rsvp": "Invited",      "notes": ""    },    {      "guest": "Uncle Dev",      "email": "dev.anand@mail.com",      "side": "Tom",      "partySize": 1,      "meal": "Lamb",      "table": 1,      "rsvp": "Declined",      "notes": "Sending a gift, away that week."    },    {      "guest": "The Moreau family",      "email": "claire.moreau@mail.com",      "side": "Ana",      "partySize": 3,      "meal": "Risotto (v)",      "table": 4,      "rsvp": "Attending",      "notes": ""    }  ]};

Remix

Remix this template

Describe what to change and the agent starts from Wedding guest list's files. The box is already started for you: finish “Start from Wedding guest list and …”

Agent ready

Creates a free account first; your idea is carried over.

Dependencies

Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.

  • react^19.1.0
  • react-dom^19.1.0
  • vite^6.3.0
  • @vitejs/plugin-react^4.4.0
  • tailwindcss^4.1.0
  • @tailwindcss/vite^4.1.0
  • typescript^5.8.0

How it runs

Framework
Vite + React + TypeScript
Dev command
npm run dev
Build command
npm run build
Output directory
dist
Port
5173
Entry route
/

Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.

All templates

Build on Wedding guest list

Create a free account, start from this template, and ask the AI agent to turn it into your app.