{"id":15064531,"url":"https://github.com/tomeraberbach/hackathon","last_synced_at":"2025-10-05T01:30:53.837Z","repository":{"id":91051108,"uuid":"203681028","full_name":"TomerAberbach/hackathon","owner":"TomerAberbach","description":"A hackathon web application with a comprehensive administrative backend, email infrastructure, attendee registration, and optional MLH integration.","archived":true,"fork":false,"pushed_at":"2020-04-05T20:03:54.000Z","size":558,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-04T00:41:57.287Z","etag":null,"topics":["event-management","event-management-system","hackathon","hackathon-application","hackathon-website","major-league-hacking","mlh","rails","rails-application","ruby","ruby-application","ruby-on-rails","web-application"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/TomerAberbach.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","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":"2019-08-21T23:52:22.000Z","updated_at":"2024-01-15T16:04:58.000Z","dependencies_parsed_at":"2023-03-01T17:00:17.891Z","dependency_job_id":null,"html_url":"https://github.com/TomerAberbach/hackathon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TomerAberbach/hackathon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerAberbach%2Fhackathon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerAberbach%2Fhackathon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerAberbach%2Fhackathon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerAberbach%2Fhackathon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TomerAberbach","download_url":"https://codeload.github.com/TomerAberbach/hackathon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomerAberbach%2Fhackathon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278399626,"owners_count":25980330,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["event-management","event-management-system","hackathon","hackathon-application","hackathon-website","major-league-hacking","mlh","rails","rails-application","ruby","ruby-application","ruby-on-rails","web-application"],"created_at":"2024-09-25T00:19:54.616Z","updated_at":"2025-10-05T01:30:53.337Z","avatar_url":"https://github.com/TomerAberbach.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hackathon\n\n\u003e A hackathon web application with a comprehensive administrative backend, email infrastructure, attendee registration, and optional MLH integration.\n\n## Deployment\n\n### Platform\n\n#### Heroku\n\n##### Automatic\n\nClick on the following button to deploy the web application to Heroku:\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\n##### Manual\n\nPerform the following steps:\n1. Sign up for an account at [Heroku](https://heroku.com) and [install the Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli#download-and-install) if you have not already done so.\n2. Clone the repository and change your current working directory to the newly created `hackathon` directory:\n   * SSH (use if you have [configured an SSH key with GitHub](https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh)):\n     ```sh\n     $ git clone git@github.com:TomerAberbach/hackathon.git\n     $ cd hackathon\n     ```\n   * HTTPS:\n     ```sh\n     $ git clone https://github.com/TomerAberbach/hackathon.git\n     $ cd hackathon\n     ```\n3. Log in to Heroku through the Heroku CLI:\n   ```sh\n   $ heroku login\n   ```\n4. Create a Heroku application:\n   * SSH (use if you have [configured an SSH key with Heroku](https://devcenter.heroku.com/articles/keys#adding-keys-to-heroku)):\n     ```sh\n     $ heroku create --ssh-git\n     ```\n   * HTTPS:\n     ```sh\n     $ heroku create --ssh-git\n     ```\n5. Configure the application's [buildpacks](https://devcenter.heroku.com/articles/buildpacks) (Active Storage preview and Ruby):\n   ```sh\n   $ heroku buildpacks:add -i 1 https://github.com/heroku/heroku-buildpack-activestorage-preview\n   $ heroku buildpacks:add -i 2 heroku/ruby\n   ```\n6. Configure the application's [Heroku addons](https://devcenter.heroku.com/articles/add-ons) (SendGrid and Cloudinary):\n   ```sh\n   $ heroku addons:create sendgrid\n   $ heroku addons:create cloudinary\n   ```\n   The previous commands set the `SENDGRID_USERNAME`, `SENDGRID_PASSWORD`, and `CLOUDINARY_URL` environment variables for you on Heroku.\n7. Set the application's `ADMIN_EMAIL` and `DOMAIN`. Refer to the **Environment Variables** section for a description of each environment variable:\n   ```sh\n   $ heroku config:set ADMIN_EMAIL=youradmin@email.com\n   $ heroku config:set DOMAIN=yourdomain.com\n   ```\n   You may choose to set the `DOMAIN` environment variable to Heroku's randomly generated hostname initially, and then update it upon securing and [configuring a custom domain name with Heroku](https://devcenter.heroku.com/articles/custom-domains).\n8. Run the following command and verify that each environment variable in the **Environment Variables** section is included in the output:\n   ```sh\n   $ heroku config\n   ```\n9. Determine the current Git branch using by running `git branch` and then deploy the application to Heroku:\n   ```sh\n   $ git push heroku current_branch_name:master\n   ```\n10. Migrate and seed the application's database:\n    ```sh\n    $ heroku run rails db:migrate db:seed\n    ```\n    At this point the email address set in the `ADMIN_EMAIL` environment variable should have received an invitation email, but the link in the email will not work until the next step is completed.\n11. Scale the application to use a single [dyno](https://devcenter.heroku.com/articles/dynos), a lightweight Linux container:\n    ```sh\n    $ heroku ps:scale web=1\n    ```\n\nYou can now view the application home page by running `heroku open` or navigating to its URL in a web browser. Additionally, the link in the invitation email sent to the email address set in the `ADMIN_EMAIL` environment variable should now be used to create the super admin account. Lastly, the application dashboard is accessible at the `/dashboard` path. For example, if your `DOMAIN` environment variable is set to `hacktcnj.com`, then the application dashboard can be found at `hacktcnj.com/dashboard`.\n\n###### Appendix\n\nIn general, you can run any command on your Heroku dyno using `heroku run \u003cyour-command\u003e`. To start a remote interactive shell session on your heroku dyno run the following command (press \u003ckbd\u003eCtrl+C\u003c/kdb\u003e to stop viewing the logs):\n```sh\n$ heroku run bash\n```\n\nIf you need to clear the application's database run the following command, which is **irreversible**:\n```sh\n$ heroku run DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:schema:load\n```\nYou will probably want to reseed the database afterwards:\n```sh\n$ heroku run rails db:seed\n```\n\nIf view your application's logs in realtime run the following command (press \u003ckbd\u003eCtrl+C\u003c/kdb\u003e to stop viewing the logs):\n```sh\n$ heroku logs --tail\n```\n\n### Environment Variables\n\nSign up for an account at [SendGrid](https://sendgrid.com) and set the `SENDGRID_USERNAME` and `SENDGRID_PASSWORD` environment variables. The website requires SendGrid to send emails.\n\nSet the `ADMIN_EMAIL` environment variable to an email address. The email address will receive a super admin account invitation email when the website's database is initially populated. The super admin can then invite additional admins if necessary. \n\nSet the `DOMAIN` environment variable to the domain name, without a protocol prefix or path suffix, that targets the website. For example, `hacktcnj.com` is a valid value.\n\nIn the development and test environments, Active Storage, which is responsible for storing images and documents, is configured to use the local file system. However, in the production environment, Active Storage is configured to use Cloudinary, a cloud storage provider, because many website hosting providers provide an ephemeral file system, which cannot persist data. Sign up for an account at [Cloudinary](https://cloudinary.com) set the `CLOUDINARY_URL` environment variable in the production environment.\n\n## Development\n\n1. Install [Ruby and Rails](https://gorails.com/setup) and [PostgreSQL](http://postgresguide.com/setup/install.html).\n2. Clone the repository and change your current working directory to the newly created `hackathon` directory:\n   * SSH (use if you have [configured an SSH key with GitHub](https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh)):\n     ```sh\n     $ git clone git@github.com:TomerAberbach/hackathon.git\n     $ cd hackathon\n     ```\n   * HTTPS:\n     ```sh\n     $ git clone https://github.com/TomerAberbach/hackathon.git\n     $ cd hackathon\n     ```\n3. Set the environment variables listed in the **Environment Variables** section by creating an `application.yml` file in the `config` directory and setting the appropriate environment variable values like so:\n   ```yaml\n   SENDGRID_USERNAME: \"your SendGrid username\"\n   SENDGRID_Password: \"your SendGrid password\"\n   ADMIN_EMAIL: \"your email address\"\n   DOMAIN: \"localhost:3000\"\n   ```\n   DO **NOT** CHECK THIS FILE INTO VERSION CONTROL.\n4. Install the project dependencies:\n   ```sh\n   $ bundle install\n   ```\n   If you encounter errors, try restarting PostgreSQL and installing additional updates.\n5. Set up the database:\n   ```sh\n   $ rails db:setup\n   ```\n6. Run the application (visit at [localhost:3000]):\n   ```sh\n   $ rails server\n   ```\n   Modify code and refresh web pages to see the difference.\n\n## Resources\n\n* [Getting Started with Rails](https://guides.rubyonrails.org/getting_started.html)\n\n### Models\n* [What is ActiveRecord?](https://guides.rubyonrails.org/active_record_basics.html)\n* [Model Querying](https://guides.rubyonrails.org/active_record_querying.html)\n* [Model Validation](https://guides.rubyonrails.org/active_record_validations.html)\n* [Model Callbacks](https://guides.rubyonrails.org/active_record_callbacks.html)\n* [Migrations](https://guides.rubyonrails.org/active_record_migrations.html)\n* [Model Associations](https://guides.rubyonrails.org/association_basics.html)\n\n### Controllers\n* [What is a Controller?](https://guides.rubyonrails.org/action_controller_overview.html)\n* [Routing](https://guides.rubyonrails.org/routing.html)\n\n### Views\n* [Layouts and Rendering](https://guides.rubyonrails.org/layouts_and_rendering.html)\n* [Forms](https://guides.rubyonrails.org/form_helpers.html)\n\n### Other\n* [File Storage](https://edgeguides.rubyonrails.org/active_storage_overview.html)\n* [Sending Emails](https://guides.rubyonrails.org/action_mailer_basics.html)\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/TomerAberbach/hackathon/blob/master/.github/CONTRIBUTING.md) for contributing guidelines.\n\n## License\n\nCopyright © 2019 [Tomer Aberbach](https://github.com/TomerAberbach) and [Thomas Orth](https://github.com/TomOrth)\nReleased under the [MIT license](https://github.com/TomerAberbach/hackathon/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomeraberbach%2Fhackathon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomeraberbach%2Fhackathon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomeraberbach%2Fhackathon/lists"}