/rocket-link

πŸš€πŸ”—: emoji link for your link

Primary LanguageClojureMIT LicenseMIT

Test and Build

Service to create short emoji link for your long-long link.

https://πŸš€πŸ”—.ml/to/πŸ˜† βž” https://github.com/Seryiza/rocket-link/stargazers

main page screenshot created link page screenshot

How to develop it

Project requires Leiningen (2.0.0+).

export PORT=3000
export PROJECT_URL=http://localhost:3000
export DATABASE_URL=postgresql://postgres:pass@localhost:54320/rocket_link

$ lein deps
$ lein migratus migrate
$ lein repl
user=> (dev)            ; Enter to development namespace
rocket-repl=> (start)   ; Start systems (db connection, http server...)
rocket-repl=> (refresh) ; Reload changed namespaces and restart systems

See also: Clojure Workflow Reloaded, Mount REPL

Neovim

If you use Neovim and Conjure, you can configurate your init.lua like this:

vim.g['conjure#client#clojure#nrepl#refresh#after'] = 'rocket-repl/restart'

And restart changed namespaces by default mapping <localleader>rr. See Conjure doc. It's very cool!

ИдСи возмоТностСй

  • Главная страница для создания эмодзи-ссылки
  • ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ ссылкам
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ / ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ссылокой послС Π΅Ρ‘ создания
  • РСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ список своих ссылок
  • Бтатистика ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΠΎ своим ссылкам
  • API endpoint для создания ссылки
  • Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° администратора со списком всСх ссылок ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡ… ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² эмодзи ΠΏΡ€ΠΈ создании ссылки
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ самому Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ эмодзи (частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ)

ИдСи тСхничСскиС

  • ΠžΡ‚Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° использованиС env + config.edn
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ CSRF
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π±ΠΎΡ‚ΠΎΠ²
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ эмодзи ΠΈ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· списка эмодзи Π±Π΅Π· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ коррСктности URL (+ частичноС исправлСниС Π²ΠΈΠ΄Π° "Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ https://")
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок 5xx (Sentry?)
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ случайноС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π² порядкС возрастания Unicode Emoji
  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ punycode/redirect ΠΊΠ°ΠΊ middleware (ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ring redirect)
    • Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π΄Π΅ΠΊΠΎΠ΄Π° ΠΏΡƒΠ½ΠΈΠΊΠΎΠ΄Π° (для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ отобраТСния origin link Π² /my/links)
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для SEO
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ favicon
  • ΠŸΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ BASE_DOMAIN ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ
  • Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ тСстов
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π³Π΄Π΅ трСбуСтся (особСнно Π² ΠΊΠΎΠ΄ эмодзи)
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ посСщаСмости
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‘ΠΌΠΎΡ‡Π½Ρ‹Π΅ тСсты
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΡƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, потрСбуСтся ΠΎΡ‚Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ message.clj (вынСсти сообщСния Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹)
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ 404
  • Π—Π°ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HugSQL для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ взаимодСйствия с Π‘Π”
  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ /logout ΠΊΠ°ΠΊ POST-ΠΌΠ΅Ρ‚ΠΎΠ΄
  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€ΠΎΡƒΡ‚Ρ‹ (Π»ΠΎΠ³ΠΈΠ½-рСгистрация, Π»ΠΎΠ³Π°ΡƒΡ‚, ΠΌΠΎΠΈ ссылки) доступными Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… / Π½Π΅-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…)
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ‡Π΅Ρ€Π΅Π· re-frame
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Kubernetes?
  • ΠŸΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ Π½Π° deps.edn