{"id":14955489,"url":"https://github.com/tmtocb/tasks-json-rest-api-tdd","last_synced_at":"2026-01-21T16:31:07.625Z","repository":{"id":54726690,"uuid":"334937038","full_name":"tmtocb/tasks-JSON-REST-API-TDD","owner":"tmtocb","description":"Rails 6 Tasks JSON REST CRUD API using JWT authentication, full test suite with RSpec, ActiveModel serialization, versioning, Bcrypt secure password, Travis-CI, Heroku, Brakeman, Bundler-Audit, Pry in development/production. ","archived":false,"fork":false,"pushed_at":"2021-02-03T12:22:14.000Z","size":352,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T09:44:19.216Z","etag":null,"topics":["bcrypt","heroku","json","json-api","jwt-authentication","rails-api","rails6","restful-api","rspec","serialization","tdd","travis-ci","versioning"],"latest_commit_sha":null,"homepage":"https://tmt-apionly.herokuapp.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmtocb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-01T12:07:05.000Z","updated_at":"2022-05-08T11:54:04.000Z","dependencies_parsed_at":"2022-08-14T01:00:40.648Z","dependency_job_id":null,"html_url":"https://github.com/tmtocb/tasks-JSON-REST-API-TDD","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/tmtocb%2Ftasks-JSON-REST-API-TDD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmtocb%2Ftasks-JSON-REST-API-TDD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmtocb%2Ftasks-JSON-REST-API-TDD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmtocb%2Ftasks-JSON-REST-API-TDD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmtocb","download_url":"https://codeload.github.com/tmtocb/tasks-JSON-REST-API-TDD/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247631273,"owners_count":20970038,"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":["bcrypt","heroku","json","json-api","jwt-authentication","rails-api","rails6","restful-api","rspec","serialization","tdd","travis-ci","versioning"],"created_at":"2024-09-24T13:11:13.714Z","updated_at":"2026-01-21T16:31:07.584Z","avatar_url":"https://github.com/tmtocb.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"## JSON REST CRUD API - Tasks\n\n---\n\n![](api1.png)\n![](api2.png)\n\n---\n\n## Stack\n\n* \u003cimg alt=\"Ruby\" src=\"https://img.shields.io/badge/ruby-%23CC342D.svg?\u0026style=for-the-badge\u0026logo=ruby\u0026logoColor=white\"/\u003e as language.\n* \u003cimg alt=\"Rails\" src=\"https://img.shields.io/badge/rails%20-%23CC0000.svg?\u0026style=for-the-badge\u0026logo=ruby-on-rails\u0026logoColor=white\"/\u003e as framework.\n* \u003cimg alt=\"Postgres\" src =\"https://img.shields.io/badge/postgres-%23316192.svg?\u0026style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"/\u003e as database.\n* \u003cimg alt=\"Heroku\" src=\"https://img.shields.io/badge/heroku%20-%23430098.svg?\u0026style=for-the-badge\u0026logo=heroku\u0026logoColor=white\"/\u003e for continuous-deployment in production (with always forced SSL connection)\n* \u003cimg alt=\"TravisCI\" src=\"https://img.shields.io/badge/travisci%20-%232B2F33.svg?\u0026style=for-the-badge\u0026logo=travis\u0026logoColor=white\"/\u003e for continuous-integration\n* \u003cimg alt=\"Git\" src=\"https://img.shields.io/badge/git%20-%23F05033.svg?\u0026style=for-the-badge\u0026logo=git\u0026logoColor=white\"/\u003e\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/badge/github%20-%23121011.svg?\u0026style=for-the-badge\u0026logo=github\u0026logoColor=white\"/\u003e for version control, in this project I have learned branching, pull requests and merging. \n* **RSpec, FactoryBot, Shoulda-Matchers, Guard-RSpec, Database-Cleaner** as test suite stack.\n* gem **JWT** as a service for User authentication.\n* gem **will_paginate** for pagination.\n* gem **active_model_serializers** for Task data serialization.\n* gem **bcrypt** for User secure_password.\n* gem **rubocop** for static-code-analysis\n* gem **brakeman** for security vulnerability checks.\n* gem **bundler-audit** for Bundler security verification\n* gem **bullet** in development for killing n+1 queries.\n* gem **strong_migrations** in development for unsafe migrations.\n* gem **better_errors** in development for cleaner errors.\n* gem **pry** for debugging.\n* gem **faker** for seed sample data.\n\n---\n\n## Run app with HTTPie\n\n`rails s` to run the server\n\n`http :3000/signup name=ash email=test@email.com password=foobar password_confirmation=foobar` to sign-up and get authorization token\n\n`http :3000/auth/login email=test@email.com password=foobar` to log-in\n\n`http :3000/tasks page==2 Accept:'application/vnd.tasks.v1+json' Authorization:'token'` to see all Tasks with pagination and default V1 version\n\n`http POST :3000/tasks/1/points name='Listen to Don Giovanni' Accept:'application/vnd.tasks.v1+json' Authorization:'token'` to post new point of TASK with ID 1\n\n---\n\n## Configuration \u0026 dependencies\n\n### System dependencies\n\n`Ruby: 2.7.2p137`\n\n`Rails: 6.0.3.4`\n\n`database: postgresql`\n\n### Configuration\n\n`git clone https://github.com/tmtocb/tasks-JSON-REST-API-TDD`\n\n`bundle install`\n\n\n### Database\n\n`rails db:drop db:create db:migrate`\n\n`rails db:seed` to seed database with faker data\n\n### Run the app\n\n`rails s`\n\n\n### Development tools\n\n`binding.pry` to debug\n\n`rubocop` for static-code-analysis\n\n`brakeman` for security vulnerability checks.\n\n`bundler-audit` for Bundler security verification\n\n\n### Run tests\n\n`rspec` to run full test suite\n\n`guard` for autotests live in development","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmtocb%2Ftasks-json-rest-api-tdd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmtocb%2Ftasks-json-rest-api-tdd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmtocb%2Ftasks-json-rest-api-tdd/lists"}