{"id":13558228,"url":"https://github.com/coopdevs/timeoverflow","last_synced_at":"2025-04-09T09:07:12.901Z","repository":{"id":215981723,"uuid":"6365733","full_name":"coopdevs/timeoverflow","owner":"coopdevs","description":"🏦 ⌛ A time banking system","archived":false,"fork":false,"pushed_at":"2024-05-01T18:27:30.000Z","size":16309,"stargazers_count":143,"open_issues_count":22,"forks_count":65,"subscribers_count":20,"default_branch":"develop","last_synced_at":"2024-05-02T01:08:36.749Z","etag":null,"topics":["bank","banking","ruby","time","timebank"],"latest_commit_sha":null,"homepage":"https://www.timeoverflow.org","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coopdevs.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":"2012-10-24T06:48:53.000Z","updated_at":"2024-05-03T18:47:09.142Z","dependencies_parsed_at":"2024-05-03T18:46:54.049Z","dependency_job_id":null,"html_url":"https://github.com/coopdevs/timeoverflow","commit_stats":{"total_commits":1495,"total_committers":35,"mean_commits":"42.714285714285715","dds":0.7190635451505016,"last_synced_commit":"afafeaf38afb74f5179799d5628e0d0cc2e6662e"},"previous_names":["coopdevs/timeoverflow"],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopdevs%2Ftimeoverflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopdevs%2Ftimeoverflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopdevs%2Ftimeoverflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coopdevs%2Ftimeoverflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coopdevs","download_url":"https://codeload.github.com/coopdevs/timeoverflow/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248008631,"owners_count":21032556,"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":["bank","banking","ruby","time","timebank"],"created_at":"2024-08-01T12:04:49.354Z","updated_at":"2025-04-09T09:07:12.882Z","avatar_url":"https://github.com/coopdevs.png","language":"Ruby","readme":"# TimeOverflow\n\n[![Build Status](https://github.com/coopdevs/timeoverflow/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/coopdevs/timeoverflow/actions)\n[![Maintainability](https://api.codeclimate.com/v1/badges/f82c6d98a2441c84f2ef/maintainability)](https://codeclimate.com/github/coopdevs/timeoverflow/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/f82c6d98a2441c84f2ef/test_coverage)](https://codeclimate.com/github/coopdevs/timeoverflow/test_coverage)\n\n#### www.timeoverflow.org\n\n🏦 ⌛ Time Bank management system. [Learn more about Time Banks](http://www.bdtonline.org/).\n\nTimeOverflow is a software developed in an altruistic way to offer a system that\nfacilitates the interaction of the members and the management of the Time Banks.\nThe model on which we work is guided by the needs of the Time Banks that make use\nof it and is prepared to be able to accommodate several Time Banks in a single installation,\nfor this account with three levels of privileges: superadmin, admin (only manages a bank)\nand members of a bank.\n\n![Demo UI](docs/images/demo_ui.jpeg)\n\nTimeOverflow is divided into 2 large blocks:\n\n* **Management system for administrators**\n* **Social network and online banking for users**\n\n\u003e **NOTE** A physical Time Bank can work only with the management block, it could happen, for example, that the vast majority of its members do not use the Internet and may want to operate only with listings, checks and a management office.\n\n### Management system\n\nPhysical Time Banks (mainly focused on TimeOverflow) often work without the Internet, perform\nlists of services and members and pay the hours with heels that are finally entered in the office, therefore\nthe management system allows us to manage the members and their services, draw lists and keep accounting.\nIt is important that Bank managers (admin) have useful information about the community so that they can act on it\n(for example, statistics on weak users, incident management, balance of accounts, etc.)\n\n### Social Network and Online Banking\n\nThe social network makes it easy for members to meet and meet outside the events scheduled by the Time Bank,\nas well as being able to post offers / demand ads explained in detail.\n\nOn the other hand the members can be paid the services of virtual way to save the passage through the office of the Bank\nof Time and also have the possibility to consult the extract of their account.\n\n## Docker deploying\n\nThis site is ready to be deployed in production with an optimized Docker image which uses two stages in order to minimize the final image size.\n\nYou can locally test the production deployment by the include docker-compose.yml file:\n\n```bash\ndocker compose up\n```\n\nThe first time running it will build the image and setup the database along with some seeds in it (testing data). If the database already exists, it will run migrations (if needed) and just start the application.\n\nGo to `http://localhost:3000` to see the application running.\n\n\u003e Note that the current docker-compose.yml is not suitable for a real production deployment, it's just for testing the production Dockerfile locally.\n\u003e For production deployment you should use a real database and a reverse proxy like Nginx or Apache (with SSL enabled).\n\u003e Refer to the next section in order to see the relevant ENV variables to configure the application.\n\n### ENV variables\n\nIn order to configure the application you can use the following ENV variables:\n\n\u003e Make sure to configure at least the ones without a default value (empty).\n\n| ENV | Description | Default |\n| --- | --- | --- |\n| `ADMINS` | Space separated list of emails for the superadmins (ie: `admin@timeoverflow.org` | |\n| `ALLOWED_HOSTS` | Put here the list of hosts allowed to access the application. Separate with spaces, for instance: `www.timeoverflow.org timeoverflow.org` | `localhost` |\n| `RAILS_ENV` | Define the rails environment (not necessary to setup unless you have some special requirements) | `production` |\n| `SECRET_KEY_BASE` | Secret key for the application, generate a new one with the command `rails secret` | |\n| `DATABASE_URL` | Database URL, the format is `postgresql://user:password@host:port/database` | |\n| `RAILS_SERVE_STATIC_FILES` | Tell the application to serve static files (you might want to turn this off if you are using an external web server to serve files from the `public` folder) | `true` |\n| `RAILS_LOG_TO_STDOUT` | Tell the application to log to STDOUT (useful for Docker) | `true` |\n| `RAILS_LOG_LEVEL` | Log level for the application (use `debug` for maximum information) | `info` |\n| `RAILS_MAX_THREADS` | Maximum number of threads to use in the application (use `1` if multithreading is not desired) | `5` |\n| `RAILS_MIN_THREADS` | Minimum number of threads to use in the application | `RAILS_MAX_THREADS` value |\n| `WEB_CONCURRENCY` | Number of web server processes to use | `2` |\n| `RUN_SIDEKIQ` | Run Sidekiq worker process in the docker instance (you might want to change this if want to run different docker instances for Sidekiq and Rails) | `true` |\n| `RUN_RAILS` | Run Rails web server process in the docker instance | `true` |\n| `SIDEKIQ_CONCURRENCY` | Number of threads to use in Sidekiq | `5` |\n| `STORAGE_PROVIDER` | Storage provider for the application (currently the application supports `local` and `amazon`) | `amazon` |\n| `FORCE_SSL` | Force SSL connections | `false` |\n| `MAIL_LINK_HOST` | Host to use in the links sent by email (use your domain without protocol `mydomain.tld`) | |\n| `MAIL_LINK_PROTOCOL` | Protocol to use in the previous host defined for links sent by email | `https` |\n| `SMTP_ADDRESS` | SMTP server address (ie: `smtp.mailgun.org`) | |\n| `SMTP_PORT` | SMTP server port (ie: `587`) | |\n| `SMTP_DOMAIN` | SMTP domain (usually the application's domain) | |\n| `SMTP_USER_NAME` | SMTP username | |\n| `SMTP_PASSWORD` | SMTP password | |\n| `SMTP_AUTHENTICATION` | SMTP authentication method | `plain` |\n| `SMTP_ENABLE_STARTTLS_AUTO` | Enable STARTTLS | `true` |\n| `SMTP_OPENSSL_VERIFY_MODE` | OpenSSL verify mode | `none` |\n| `AWS_ACCESS_KEY_ID` | AWS access key ID (only if `STORAGE_PROVIDER` is `amazon`) | |\n| `AWS_SECRET_ACCESS_KEY` | AWS secret access key (only if `STORAGE_PROVIDER` is `amazon`) | |\n| `AWS_BUCKET` | AWS bucket name (only if `STORAGE_PROVIDER` is `amazon`) | |\n| `AWS_REGION` | AWS region (only if `STORAGE_PROVIDER` is `amazon`) | |\n\n## Contributions\n\nAny kind of feedback, bug report, idea or enhancement are really appreciated.\n\nTo contribute, just fork the repo, hack on it and send a pull request. Don't forget to add tests for behaviour changes and run the test suite by:\n\n```\nbundle exec rspec\n```\n\nYou can also run the linter by:\n\n```\nbundle exec rubocop\n```\n\n👉 Further information in our [Wiki](https://github.com/coopdevs/timeoverflow/wiki).\n\n## License\n\n\u003e AGPL3\n\nYou can find the license file [here](LICENSE).\n","funding_links":[],"categories":["Ruby","Happy Exploring 🤘","ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoopdevs%2Ftimeoverflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoopdevs%2Ftimeoverflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoopdevs%2Ftimeoverflow/lists"}