2021-06-15 10:48:29 -05:00
2021-06-13 08:01:12 -05:00
2021-06-15 06:51:19 -05:00
2021-06-13 16:28:45 -05:00
2021-06-14 08:24:34 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 16:28:45 -05:00
2021-06-13 09:01:22 -05:00
2021-06-13 16:28:45 -05:00
2021-06-13 16:28:45 -05:00
2021-06-13 09:05:20 -05:00
2021-06-13 16:28:45 -05:00
2021-06-13 10:46:52 -05:00
2021-06-13 20:36:39 -05:00
2021-06-14 11:46:25 -05:00
2021-06-15 10:48:29 -05:00
2021-06-14 11:46:25 -05:00
2021-06-14 00:41:53 -05:00
2021-06-13 10:46:52 -05:00
2021-06-15 10:48:29 -05:00
2021-06-14 00:41:53 -05:00
2021-06-14 08:24:34 -05:00

URL shortener

How to run

Development

  • Run migrations
docker-compose up -d db
docker-compose run --rm app bundle exec rails db:migrate
  • Run
docker-compose up

Testing

docker-compose run --rm app bundle exec rails test

Rubocop

docker-compose run --rm app bundle exec rubocop 

Results

  • Testing
Finished in 2.227992s, 10.3232 runs/s, 10.7720 assertions/s.
23 runs, 24 assertions, 0 failures, 0 errors, 0 skips
Coverage report generated for Minitest to /usr/src/app/coverage. 77 / 77 LOC (100.0%) covered.

COVERAGE: 100.00% -- 77/77 lines in 11 files
BRANCH COVERAGE: 100.00% -- 20/20 branches in 11 branches

+----------+-------------------------------------------+-------+--------+---------+-----------------+----------+-----------------+------------------+
| coverage | file                                      | lines | missed | missing | branch coverage | branches | branches missed | branches missing |
+----------+-------------------------------------------+-------+--------+---------+-----------------+----------+-----------------+------------------+
| 100.00%  | app/controllers/application_controller.rb | 2     | 0      |         | 100.00%         | 0        | 0               |                  |
| 100.00%  | app/controllers/links_controller.rb       | 22    | 0      |         | 100.00%         | 8        | 0               |                  |
| 100.00%  | app/controllers/sessions_controller.rb    | 14    | 0      |         | 100.00%         | 4        | 0               |                  |
| 100.00%  | app/controllers/users_controller.rb       | 12    | 0      |         | 100.00%         | 4        | 0               |                  |
| 100.00%  | app/helpers/application_helper.rb         | 1     | 0      |         | 100.00%         | 0        | 0               |                  |
| 100.00%  | app/helpers/links_helper.rb               | 1     | 0      |         | 100.00%         | 0        | 0               |                  |
| 100.00%  | app/helpers/sessions_helper.rb            | 7     | 0      |         | 100.00%         | 2        | 0               |                  |
| 100.00%  | app/helpers/users_helper.rb               | 1     | 0      |         | 100.00%         | 0        | 0               |                  |
| 100.00%  | app/models/application_record.rb          | 2     | 0      |         | 100.00%         | 0        | 0               |                  |
| 100.00%  | app/models/link.rb                        | 11    | 0      |         | 100.00%         | 2        | 0               |                  |
| 100.00%  | app/models/user.rb                        | 4     | 0      |         | 100.00%         | 0        | 0               |                  |
+----------+-------------------------------------------+-------+--------+---------+-----------------+----------+-----------------+------------------+
  • Rubocop
Inspecting 58 files
..........................................................

58 files inspected, no offenses detected

TODO

  • Create link model (make sure to create a index for the slug and click counter)
  • Generate unique slug
  • Link unit tests
  • Stimulus setup
  • Link controller (handle redirection)
  • Main page with input box
  • Create user model
  • User unit tests
  • Add userId key to link model
  • Login and logout (sessions)
  • User links view
  • Modals layout
  • Setup Redis for production cache_store
  • Deployment CI
S
Description
Fast, lightweight, self-hosted URL shortener service with minimal click tracking
Readme MIT 59 MiB
Languages
Crystal 98.7%
Dockerfile 1.3%