{"id":13819830,"url":"https://github.com/SplitTime/OpenSplitTime","last_synced_at":"2025-05-16T07:32:23.938Z","repository":{"id":37789283,"uuid":"44450961","full_name":"SplitTime/OpenSplitTime","owner":"SplitTime","description":"Timed endurance event data","archived":false,"fork":false,"pushed_at":"2024-11-19T07:28:35.000Z","size":27407,"stargazers_count":28,"open_issues_count":33,"forks_count":10,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-11-19T08:19:41.343Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.opensplittime.org","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/SplitTime.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":"2015-10-17T19:22:54.000Z","updated_at":"2024-11-19T07:28:38.000Z","dependencies_parsed_at":"2024-11-19T08:29:25.898Z","dependency_job_id":null,"html_url":"https://github.com/SplitTime/OpenSplitTime","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/SplitTime%2FOpenSplitTime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SplitTime%2FOpenSplitTime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SplitTime%2FOpenSplitTime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SplitTime%2FOpenSplitTime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SplitTime","download_url":"https://codeload.github.com/SplitTime/OpenSplitTime/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225413742,"owners_count":17470617,"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-08-04T08:00:53.643Z","updated_at":"2025-05-16T07:32:23.931Z","avatar_url":"https://github.com/SplitTime.png","language":"Ruby","funding_links":[],"categories":["Happy Exploring 🤘"],"sub_categories":[],"readme":"OpenSplitTime\n================\n\nOpenSplitTime is a site for endurance athletes, fans and families, race directors, volunteers, support crews, and data geeks. Our purpose is simple: to make it easy to collect endurance event data, play with it, plan with it, safely archive it, and never worry about it again.\n\nThe site is built and maintained by OpenSplitTime Company, a Colorado nonprofit corporation. If you find the website useful, motivating, entertaining, or strangely beautiful, please consider making a small [donation](https://www.opensplittime.org/donations) to help us keep the doors open. OpenSplitTime Company is registered with the U.S. Internal Revenue Service as a 501(c)(3) charitable organization. Your donations are probably tax deductible (but if you have any question you should ask your tax advisor about that stuff).\n\nOur software engine is open source. If you have a suggestion for the site, or you are a software engineer and would like to help with development, or if you are a race director or data geek and would like to be a beta tester, please [contact us](mailto:mark@opensplittime.org) and let's talk.\n\nOpenSplitTime is developed and maintained by endurance athletes for endurance athletes.\n\nRuby on Rails\n-------------\n\nThis application requires:\n\n- Ruby 3.4\n- Rails 7.1\n\nLearn more about [Installing Rails](https://gorails.com/setup/osx/10.12-sierra).\n\nGetting Started\n---------------\n### Setup Local Environment\n\n**Homebrew (MacOS)**\n1. Install [Homebrew](http://brew.sh/).\n\n**Ruby**\n\n1. Clone the repository to your local machine by [forking the repo](https://help.github.com/articles/fork-a-repo/)\n2. Install rbenv:\n\n\u003e ### Using Homebrew on MacOS\n\u003e - Install Homebrew http://brew.sh/\n\u003e - `$ brew update`\n\u003e - `$ brew install rbenv`\n\n\u003e ### Using Debian/Ubuntu (Instructions from [DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-ubuntu-18-04))\n\u003e - Install dependencies `$ sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev`\n\u003e - Clone the rbenv repository `$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv`\n\u003e - Add to path `$ echo 'export PATH=\"$HOME/.rbenv/bin:$PATH\"' \u003e\u003e ~/.bashrc`\n\u003e - Enable automatic loading `$ echo 'eval \"$(rbenv init -)\"' \u003e\u003e ~/.bashrc`\n\u003e - Apply changes to current terminal `$ source ~/.bashrc`\n\u003e - Add ruby-build plugin `$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build`\n\n3. `$ cd` into your local `OpenSplitTime` directory\n4. `$ rbenv init` For any questions around setting up rbenv see https://github.com/rbenv/rbenv\n5. `$ rbenv install \u003ccurrent ruby version\u003e`\n6. `$ rbenv rehash` then restart the terminal session\n\n**Rails, Gems, Databases**\n\n1. `$ gem install bundler` You should not need to `sudo` this. If it says \"permission denied\" [rbenv is not setup correctly](https://github.com/rbenv/rbenv/issues/670)\n2. Install Postgres and Redis\n\n\u003e ### Using Homebrew on MacOS\n\u003e `$ brew install postgres redis`\n\n\u003e ### Using Debian/Ubuntu\n\u003e  - `$ sudo apt install postgresql libpq-dev redis-server`\n\u003e  - Setup your user (same as login) `$ sudo -u postgres createuser --interactive`\n\n3. `$ bundle install`\n\n*if running into weird errors first try `$ rbenv rehash` and restart your terminal*\n\n**Javascript Runtime + Yarn**\n\n1. Install Node.js v16 (the latest LTS as of mid-2022). We recommend using [`nvm`](https://github.com/nvm-sh/nvm). Otherwise:\n- Using MacOS: You can download the package installer from nodejs.org.\n- Using Debian/Ubuntu: `wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - \u0026\u0026 sudo apt-get install -y nodejs`\n\n2. Install Yarn\n\nAfter ensuring you're using the right version of Node.js (with `node --version`): `npm install -g yarn`\n\n**Database**\n\n1. Start your local DB `$ brew services restart postgres \u0026\u0026 brew services restart redis` or run the Postgres App\n2. `$ rails db:setup` to create the database\n3. `$ rails db:from_fixtures` to load seed data from test fixtures files\n4. `$ rails s` to start the server\n5. Type `localhost:3000` in a browser\n\n*Test Users*\n\nAfter you setup/seed your database, you should have four test users:\n```\n| Role  | Email                  | Password |\n| ----- | ---------------------- | -------- |\n| admin | user@example.com       | password |\n| user  | thirduser@example.com  | password |\n| user  | fourthuser@example.com | password |\n| user  | fifthuser@example.com  | password |\n```\n\n**Sidekiq**\n\nOpenSplitTime relies on Sidekiq for background jobs, and Sidekiq needs Redis. Make sure your Redis server (installed above) is started. Run your Sidekiq server from the command line:\n\n`$ sidekiq`\n\nYou'll know you did it right when you see the awesome ASCII art.\n\n**ChromeDriver**\n\nSome integration tests rely on Google ChromeDriver. You can install it in Mac OS X with `brew cask install chromedriver` or your preferred package \nmanager for Linux or Windows. You will also need to have Chrome installed on your system.\n\n**Continuous Integration**\n\nHeroku CI and Github Actions are both used to ensure tests are passing. The status of your branch will be indicated in github. \nPlease ensure your branch is passing before making a pull request.\n\n**Fontawesome 6**\n\nOpenSplitTime uses Fontawesome 6 Pro for icons. Fontawesome icons are self-hosted. CSS is found in the repository at \n`app/assets/stylesheets/vendor/fontawesome`, and the font files are found at `app/assets/fonts` (all fonts beginning with `fa-` \nare Fontawesome fonts).\n\nTo update Fontawesome, you will need credentials. Contact the repository maintainers to obtain credentials. Select the OpenSplitTime Kit and add the \nneeded icons from the \"Solid,\" \"Regular,\" or \"Brands\" collections using the Kit update tool, then download the kit. \n\nCopy only the following files from the downloaded kit:\n\n```\nscss/_variables.scss -\u003e app/assets/stylesheets/vendor/fontawesome/_variables.scss\nwebfonts/*.* -\u003e app/assets/fonts\n```\n\nIf you need to add icons from another collection (such as \"Light\"), you will need to add the corresponding stylesheet (such as `light.scss`) to the\n`app/assets/stylesheets/vendor/fontawesome` directory and `@include` that stylesheet from the `app/assets/stylesheets/application.bootstrap.scss` file.\n\nIn addition, note that the new css file (`light.scss` in our example) will have an incorrect URL for the font files. You will need to edit the URL to\nmatch the URLs used in the other Fontawesome stylesheets.\n\nStarting the Server\n-------------------------\n\nTo start the development server and workers, and to compile JavaScript and CSS files (and start watchers that will recompile them as they change), \nnavigate to the OpenSplitTime directory and type:\n```\n$ bin/dev\n```\n\nSupport\n-------------------------\n\nStill having issues setting up your local environment?\nCreate an [issue](https://github.com/SplitTime/OpenSplitTime/issues/new) with label `support` and we will try and help as best we can!\n\nContributing\n-------------\n\nWe love Issues but we love Pull Requests more! If you want to change something or add something feel free to do so. If you don't have enough time or skills start an issue. Below are some loose guidelines for contributing.\n\n### Pull Requests\n\nWriting code for something is the fastest way to get feedback. It doesn't matter if the code is a work in progress or just a spike of an idea we'd love to see it. Testing is critical to our long-term success, so code submissions must include tests covering all critical logic. :heart:\n\n### Issues\n\nBe detailed. They only person who knows the bug you are experiencing or feature that you want is you! So please be as detailed as possible. Include labels like `bug` or `enhancement` and you know the saying a picture is worth a thousand words. So if you can grab a screenshot or gif of the behavior even better!\n\n\nCredits\n-------\n\nThis application was originally generated back in 2015 with the [rails_apps_composer](https://github.com/RailsApps/rails_apps_composer) gem\nprovided by the [RailsApps Project](http://railsapps.github.io/).\n\nRails Composer is supported by developers who purchase the RailsApps tutorials.\n\nLicense\n-------\n\n[The MIT License](https://github.com/SplitTime/OpenSplitTime/blob/master/LICENSE)\n\nCopyright\n---------\n\nCopyright (c) 2015-2025 OpenSplitTime Company. See license for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSplitTime%2FOpenSplitTime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSplitTime%2FOpenSplitTime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSplitTime%2FOpenSplitTime/lists"}