Skip to content

projekteuler/projekteuler

Repository files navigation

Projekt Euler

Build Status

This is the Ruby on Rails web-app powering projekteuler.de. It allows visitors to view and suggest German translations of the maths puzzles found on projecteuler.net.

Getting started

  1. Download this repository, e.g., with git clone.

  2. Make sure NodeJS >= 18 is installed.

  3. Navigate inside the repository folder.

  4. Use bundler to install all required gems. $ bundle install

  5. Setup the database:

    $ bin/rails db:setup
    
  6. Start the server:

    $ bin/rails server
    
  7. Open http://localhost:3000 in your browser. You should see the web app up and running!

  8. Start playing with the web app. By default, the database will contain some users and translations. The user admin can review translations, while the user translator has submitted some translations. You can login as any user by clicking the Login button and entering their name. This is simply a mock OAuth login; in production mode, GitHub is used for login.

  9. If you ever want to reset the database to the original state, run rails db:reset.

Contributing

Do you have a suggestion for an improvement for the web app? Please create an issue for it.

Do you want to implement this improvement yourself? Follow these steps:

  1. Fork this repository on GitHub.
  2. Create a new branch for your improvement
  3. Implement your improvement, and create tests for it if applicable.
  4. Submit a pull request.

Deployment

  1. Make sure NodeJS is installed.
  2. Set up a MySQL database.
  3. Copy all files from this repository.
  4. Make sure the Rails environment is set to production.
  5. Set up the following environment variables:
    • RAILS_MASTER_KEY: The master key for decryption of the Rails credentials
    • DATABASE_NAME: The name of the MySQL database
    • DATABASE_USERNAME: The username for the MYSQL database
    • DATABASE_PASSWORD: The password for the MYSQL database
    • DATABASE_HOST: The host of the MYSQL database
    • DATABASE_PORT: The port of the MYSQL database
    • GITHUB_CLIENT_ID: The client ID of your GitHub OAuth App (that you will need to create)
    • GITHUB_CLIENT_SECRET: The client secret of the GitHub OAuth App
  6. Install all required gems with bundle install.
  7. Load the database schema with bin/rails db:schema:load.
  8. Precompile all assets with bin/rails assets:precompile.
  9. Start the server, e.g., with bin/rails server.

Anytime you update the files, you should run bin/rails db:migrate, bin/rails log:clear tmp:clear, bin/rails assets:precompile and then restart the server.

License

This project is released under the MIT License.