{"id":16745250,"url":"https://github.com/gemisis/wedding-website","last_synced_at":"2025-03-16T01:41:36.858Z","repository":{"id":68566743,"uuid":"462128200","full_name":"GEMISIS/wedding-website","owner":"GEMISIS","description":null,"archived":false,"fork":false,"pushed_at":"2022-05-31T06:10:25.000Z","size":2841,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-22T14:32:18.760Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GEMISIS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2022-02-22T03:49:35.000Z","updated_at":"2022-03-06T08:58:12.000Z","dependencies_parsed_at":"2023-09-13T14:45:51.023Z","dependency_job_id":null,"html_url":"https://github.com/GEMISIS/wedding-website","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GEMISIS%2Fwedding-website","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GEMISIS%2Fwedding-website/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GEMISIS%2Fwedding-website/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GEMISIS%2Fwedding-website/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GEMISIS","download_url":"https://codeload.github.com/GEMISIS/wedding-website/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243814906,"owners_count":20352037,"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":[],"created_at":"2024-10-13T01:44:53.676Z","updated_at":"2025-03-16T01:41:36.853Z","avatar_url":"https://github.com/GEMISIS.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Wedding Website\n\n## Overview\n\nThis is the website used for registering guests for my wedding. Because of COVID-19, we wanted to ensure all of our guests were vaccinated, and thus needed a custom website at the time to handle this with our other registration information.\n\n## Technical Design\n\nThe project uses CDK to deploy via AWS, which hosts a very simple React website that users can interact with. An architecture diagram of the website can be seen below:\n\n![The architecture diagram for the website.](https://github.com/GEMISIS/wedding-website/blob/main/diagrams/architecture.png?raw=true)\n\nFor the database, we need to store several pieces of information. Because we don't want to worry about sending registration codes for people, we instead decided to use pieces of information known to the users to register. Thus, the database needs to reflect this, and be able to handle conflicting scenarios.\n\nThe primary info we will use is a person's name and address numbre. This can result in conflicts however, so we will need sub-objects for each family to be in. To that end, the structure of the table that has been chosen looks like so:\n\n| Key Type      | Name           | Data Format            | Sample Value                      | Description                                                                           |\n| ------------- | -------------- | ---------------------- | --------------------------------- | ------------------------------------------------------------------------------------- |\n| Partition Key | Address Number | String                 | 1337                              | The number on their home for the address this family lives at.                        |\n| List of Items | Families       | List of Family Objects | [[Object Object],[Object Object]] | A list of family objects. This is because multiple famlies can live in the same home. |\n\nA family object will look like so:\n\n```json\n{\n  'people': [\n    {\n      'firstName': 'John',\n      'lastName': 'Doe',\n      'attending': true,\n      'isChild': false,\n      'entree': 'vegetarian',\n      'vaxStatus': 'Vaccinated'\n    },\n    {\n      'firstName': 'Jane',\n      'lastName': 'Doe',\n      'attending': true,\n      'isChild': false,\n      'entree': 'beef',\n      'vaxStatus': 'Boosted'\n    }\n  ],\n  'email': 'john.doe@gmail.com',\n  'phoneNumber': '111-111-1111'\n}\n```\n\n## Setup\n\nYou will need to install the following before you can use this project:\n\n- AWS CDK (Cloud Development Kit)\n- Lerna\n\nOnce you have these both installed, run `lerna bootstrap` and `lerna run bootstrap` to bootstrap the necessary dependencies and CDK configurations. Finally, update the configuration in `packages/website/src/config.json` with your information.\n\n### Building\n\nTo begin, you need to run `lerna run build` in order to compile all of the necessary code. Lerna will automatically determine the necssary dependencies and the order in which to build everything.\n\n### Deploying\n\nWhen you are ready to deploy, begin by synthesizing the CDK templates with `lerna run synth`. Then, simply run `lerna run deploy` to deploy everything!\n\n### Testing Locally\n\nTo test the website locally, run `lerna run start --stream` to open a local version of the website. Note that you will need to have deployed the APIs at least once to test locally.\n\n### Converting Excel Sheets\n\nTo convert an Excel Spreadsheet, you can use `lerna run convert -- -- --filename=X --tablename=Y` where `X` is the name of the spreadsheet file and `Y` is the name of the DynamoDB table created when deploying, to create a JSON file output.\n\n## Commands\n\n### lerna run build\n\nBuilds everything required for the site. Will output a build folder for the website, and a bin folder for the cdk project.\n\n### lerna run config\n\nRuns the configurator to configure the project with project specific variables.\n\n### lerna run synth\n\nSynthesizes the CDK project to be deployed.\n\n### lerna run bootstrap\n\nBootstrap the CDK project so that it is deployed to your account.\n\n### lerna run deploy\n\nDeploys the previously synthesized CDK project. This effectively deploys the entire website.\n\n### lerna run start\n\nRuns the website to be tested locally, instead of requiring an entire deployment each time. Note however that this will only run the website files, and that any APIs will still need to be deployed at least once before testing locally will work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemisis%2Fwedding-website","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgemisis%2Fwedding-website","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemisis%2Fwedding-website/lists"}