{"id":14955705,"url":"https://github.com/jdleesmiller/wedding","last_synced_at":"2025-10-01T01:31:20.139Z","repository":{"id":39700812,"uuid":"154996467","full_name":"jdleesmiller/wedding","owner":"jdleesmiller","description":"A simple rails app for distributing wedding information and managing the guest list.","archived":false,"fork":false,"pushed_at":"2023-03-08T19:57:20.000Z","size":6806,"stargazers_count":50,"open_issues_count":8,"forks_count":28,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-14T11:46:26.607Z","etag":null,"topics":["bootstrap","guest","rails","rails-application","rsvp","wedding"],"latest_commit_sha":null,"homepage":"https://jdlm.info/wedding","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdleesmiller.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-27T18:28:52.000Z","updated_at":"2025-01-14T02:35:15.000Z","dependencies_parsed_at":"2024-09-24T13:24:03.538Z","dependency_job_id":null,"html_url":"https://github.com/jdleesmiller/wedding","commit_stats":{"total_commits":66,"total_committers":2,"mean_commits":33.0,"dds":0.303030303030303,"last_synced_commit":"8a14419628dd3e6439d068ed8dfba2a6bc17710c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdleesmiller%2Fwedding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdleesmiller%2Fwedding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdleesmiller%2Fwedding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdleesmiller%2Fwedding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdleesmiller","download_url":"https://codeload.github.com/jdleesmiller/wedding/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234808945,"owners_count":18890088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","guest","rails","rails-application","rsvp","wedding"],"created_at":"2024-09-24T13:11:35.520Z","updated_at":"2025-10-01T01:31:19.447Z","avatar_url":"https://github.com/jdleesmiller.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rails App for Weddings and Similar Events\n\n![CI status](https://github.com/jdleesmiller/wedding/workflows/CI/badge.svg)\n\nSo you're getting married :tada:\n\nThis is a simple rails app for distributing wedding information and managing the guest list. You will probably decide to build your own (like me\u0026hellip;) but if you like you can start with this one. It's been through at least one wedding successfully!\n\n## Is it any good?\n\n\u003e THIS WEBSITE IS AWESOME! Best wedding invite ever.\n\u003e \u0026mdash; One of our guests\n\n## Features\n\n- Guests can RSVP, including dietary requirements and plus ones\n- Guests can manage their own RSVPs using a secret link in an email (no user name / password needed)\n- Responsive design on home page and RSVP pages\n- Customizable [styling and wording](#customization)\n- [Active Admin](https://activeadmin.info/) interface to manage the attendee list\n- Optional invisible [reCAPTCHA](https://www.google.com/recaptcha) integration to avoid spam\n- Sets headers to avoid being indexed by search engines\n\n## Contents\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n**Table of Contents** _generated with [DocToc](https://github.com/thlorenz/doctoc)_\n\n- [Rails App for Weddings and Similar Events](#rails-app-for-weddings-and-similar-events)\n  - [Is it any good?](#is-it-any-good)\n  - [Features](#features)\n  - [What does it look like?](#what-does-it-look-like)\n  - [How does it work?](#how-does-it-work)\n  - [Development](#development)\n    - [Initial Setup](#initial-setup)\n    - [Running the App](#running-the-app)\n  - [Customization](#customization)\n    - [Content](#content)\n    - [Styling](#styling)\n  - [Environment Variables](#environment-variables)\n    - [Sending Email](#sending-email)\n    - [ReCAPTCHA](#recaptcha)\n  - [Deployment](#deployment)\n  - [License](#license)\n  - [Credits](#credits)\n    - [Design](#design)\n    - [Photos](#photos)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## What does it look like?\n\n![Screenshot of the home page](docs/homepage_big.jpg)\n\n## How does it work?\n\nHere's a map of all the flows through the app, from the home page to the RSVP flow and also some of the separate admin interface. [Click here to expand the image.](http://jdlm.info/wedding/wedding_flow.jpg) And [here is a higher resolution PDF version](http://jdlm.info/wedding/wedding_flow.pdf).\n\n![Flow chart showing the application states.](docs/wedding_flow.jpg)\n\n## Development\n\n### Initial Setup\n\nThe simplest way to get started is to use [Docker](https://www.docker.com/).\n\n```\ngit clone https://github.com/jdleesmiller/wedding.git\ncd wedding\ncp development.env.template development.env\ndocker-compose build\ndocker-compose up -d db\ndocker-compose run --rm web bash -lc 'bin/rails db:create db:migrate'\ndocker-compose run --rm web bash -lc 'bin/rails db:seed'\n```\n\nWatch the output of `db:seed` for the default admin credentials:\n\n```\nAdmin user email: admin@example.com\nAdmin user password: (random string)\n```\n\n### Running the App\n\n```\ndocker-compose up -d\ndocker-compose logs -f\n```\n\nBy default, the app will run on http://localhost:3000\n\nThe admin interface is on http://localhost:3000/admin. Once you are logged into the admin, you can go to Admin Users, find the default admin user, and change its email address, if you like (you will need to re-enter the password).\n\nTo access the database:\n\n```\ndocker-compose exec db psql wedding_development postgres\n```\n\nTo get a shell:\n\n```\ndocker-compose exec web bash\n```\n\nOnce you have a shell in the container, you can run rails commands as normal.\n\n```\nbin/rails console\nbin/rails test\n```\n\n## Customization\n\nYou can of course customize everything by changing the code, but here are some useful places to start:\n\n### Content\n\n- [`config/locales/en.yml`](config/locales/en.yml) \u0026mdash; key strings\n\n  ```yml\n  wedding_name: \"Jack \u0026 Jill's Wedding\"\n  wedding_couple_names: 'Jack \u0026 Jill'\n  wedding_date: 'Saturday, 1 January 2000'\n  wedding_location: 'South Pole'\n  photo_credits: 'Photo Credits: Pexels'\n  ```\n\n- [`app/views/application`](app/views/application) \u0026mdash; the address on the home page and the addresses in the emails\n\n- [`app/views/welcome`](app/views/welcome) \u0026mdash; the home page content\n\n- [`development.env`](development.env.template) \u0026mdash; [environment variables](#environment-variables) in development\n\n  - set emails and other secrets that should not be checked in\n\n- [`public/wedding.ics`](public/wedding.ics) \u0026mdash; the calendar invite\n\n  - this is just a sample file; you probably want to [generate one](https://apps.marudot.com/ical/)\n\n### Styling\n\n- [`app/assets/images`](app/assets/images) \u0026mdash; the images\n\n  - `jumbo.jpg` is the title image at the top of the home page\n  - `rsvp.jpg` is the title image at the top of the RSVP pages\n\n- [`app/assets/stylesheets/application.scss`](app/assets/stylesheets/application.scss) \u0026mdash; theme colors and bootstrap customization\n\n  ```sass\n  $font-family-sans-serif: Montserrat, Helvetica, Arial, sans-serif;\n  $font-family-serif: Arvo, Georgia, \"Times New Roman\", Times, serif;\n\n  $font-family-base: $font-family-serif;\n  $headings-font-family: $font-family-sans-serif;\n\n  $body-color: rgba(28, 13, 10, 0.7);\n  $headings-color: rgba(28, 13, 10, 0.7);\n\n  $theme-colors: (\n    \"primary\": #ff745c\n  );\n\n  $enable-rounded: false;\n  ```\n\n## Environment Variables\n\n- `CANONICAL_URL` \u0026mdash; your website's domain, e.g. `www.mywedding.com`\n- `CONTACT_EMAIL` \u0026mdash; the email address that users can use to contact you, e.g. `info@mywedding.com`\n- `FROM_EMAIL` \u0026mdash; the email address that confirmations emails will come from\n\n### Sending Email\n\nThere are environment variables that correspond to each [`smtp_settings`](https://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration) key in the ActionMailer config.\n\n- `SMTP_ADDRESS` \u0026mdash; name of the SMTP server\n- `SMTP_PORT` \u0026mdash; port the SMTP server listens on (default `587`)\n- `SMTP_DOMAIN` \u0026mdash; HELO domain, if required\n- `SMTP_USER_NAME` \u0026mdash; user name for SMTP server\n- `SMTP_PASSWORD` \u0026mdash; password for SMTP server\n- `SMTP_AUTHENTICATION` \u0026mdash; authentication type (default `plain`)\n- `SMTP_ENABLE_STARTTLS_AUTO` \u0026mdash; automatically detect if STARTTLS is enabled and use it if so (default `true`)\n\n### ReCAPTCHA\n\nIf set, the website will use an invisible reCAPTCHA to prevent spam. You can get these from [Google reCAPTCHA's admin page](https://www.google.com/recaptcha/admin). Be sure to choose \"Invisible\" for the type.\n\n- `RECAPTCHA_SITE_KEY` \u0026mdash; the `data-sitekey` for the Client side integration\n- `RECAPTCHA_SECRET_KEY` \u0026mdash; the `secret` for the Server side integration\n\n## Deployment\n\nHeroku makes it easy to deploy rails apps like this one. The free postgres database is enough, unless you have \u0026gt; 10k guests! You can set up a Heroku app and connect it to your GitHub repo.\n\nYou must set the canonical host and email addresses in order to be able to send email:\n\n```\nheroku config:set \\\n  CANONICAL_HOST=www.mywedding.com \\\n  CONTACT_EMAIL='Example Name \u003cexample@example.com\u003e' \\\n  FROM_EMAIL='Example Name \u003cexample@example.com\u003e'\n```\n\nYou will also need to set up SMTP by setting the config variables above. One way to do this is to use your [Google Mail account's SMTP server](https://www.digitalocean.com/community/tutorials/how-to-use-google-s-smtp-server).\n\nThen you can get up and running with:\n\n```\nheroku run rails db:migrate db:seed\n```\n\nWatch the output of `db:seed` for the default admin credentials, like in development. The admin console will be available on `/admin`.\n\nIf you like, you can also turn on reCAPTCHA, as above.\n\n```\nheroku config:set \\\n  RECAPTCHA_SITE_KEY=... \\\n  RECAPTCHA_SECRET_KEY=...\n```\n\n## License\n\n[BSD License](LICENSE.md)\n\n## Related Projects\n\nI'm not the first rails developer to build a wedding website:\n\n- https://github.com/adambutler/wedding-on-rails\n- https://github.com/agoln/wedding\n- https://github.com/andxyz/rails-rwedding\n\n## Credits\n\nThanks to [@Hopet](https://github.com/Hopet) for help with design and copy.\n\n### Design\n\nThe default design is based on https://naomi-demo.squarespace.com/ .\n\n### Photos\n\nThe photos for the demo are from [Pexels](https://www.pexels.com/):\n\n- https://www.pexels.com/photo/selective-focus-photography-of-two-penguins-689784/\n- https://www.pexels.com/photo/cold-glacier-iceberg-melting-48178/\n- https://www.pexels.com/photo/flock-of-penguins-1036155/\n- https://www.pexels.com/photo/beautiful-flowers-bloom-blooming-blossom-548389/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdleesmiller%2Fwedding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdleesmiller%2Fwedding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdleesmiller%2Fwedding/lists"}