{"id":28449013,"url":"https://github.com/florianlechat/raven-url-shortener","last_synced_at":"2026-05-02T09:02:57.227Z","repository":{"id":295212601,"uuid":"864481443","full_name":"FlorianLeChat/Raven-Url-Shortener","owner":"FlorianLeChat","description":"🔗 A URL shortener designed to be easy to use, intrinsically secure and fully customizable, with a totally independent API.","archived":false,"fork":false,"pushed_at":"2026-05-01T16:46:43.000Z","size":48252,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-01T18:27:25.039Z","etag":null,"topics":["a11y","composer","docker","doctrine","eslint","gdpr","husky","i18n","next-ui","nextjs","npm","php","phpunit","prettier","symfony","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://url.florian-dev.fr/","language":"PHP","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/FlorianLeChat.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-28T10:33:33.000Z","updated_at":"2026-05-01T16:46:47.000Z","dependencies_parsed_at":"2025-05-24T08:39:28.616Z","dependency_job_id":"dc2f3f98-f664-4c6d-bfe8-321b0856d65a","html_url":"https://github.com/FlorianLeChat/Raven-Url-Shortener","commit_stats":null,"previous_names":["florianlechat/raven-url-shortener"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/FlorianLeChat/Raven-Url-Shortener","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianLeChat%2FRaven-Url-Shortener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianLeChat%2FRaven-Url-Shortener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianLeChat%2FRaven-Url-Shortener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianLeChat%2FRaven-Url-Shortener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlorianLeChat","download_url":"https://codeload.github.com/FlorianLeChat/Raven-Url-Shortener/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlorianLeChat%2FRaven-Url-Shortener/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32528665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["a11y","composer","docker","doctrine","eslint","gdpr","husky","i18n","next-ui","nextjs","npm","php","phpunit","prettier","symfony","tailwindcss","typescript"],"created_at":"2025-06-06T14:00:33.711Z","updated_at":"2026-05-02T09:02:57.198Z","avatar_url":"https://github.com/FlorianLeChat.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔗 Raven Url Shortener\n\n![logo](.gitlab/images/logo.png)\n\n![HTML](.gitlab/badges/html.svg)\n![CSS](.gitlab/badges/css.svg)\n![TypeScript](.gitlab/badges/typescript.svg)\n![PHP](.gitlab/badges/php.svg)\n\n![Next.js](.gitlab/badges/nextjs.svg)\n![Symfony](.gitlab/badges/symfony.svg)\n![Doctrine](.gitlab/badges/doctrine.svg)\n![TailwindCSS](.gitlab/badges/tailwindcss.svg)\n![Lucide](.gitlab/badges/lucide.svg)\n![Docker](.gitlab/badges/docker.svg)\n![Redis](.gitlab/badges/redis.svg)\n![i18n](.gitlab/badges/i18n.svg)\n![Prettier](.gitlab/badges/prettier.svg)\n![ESLint](.gitlab/badges/eslint.svg)\n![OpenAPI](.gitlab/badges/openapi.svg)\n![Swagger](.gitlab/badges/swagger.svg)\n\n## In French\n\n\u003e [!IMPORTANT]\n\u003e Depuis avril 2026, le code du projet est désormais hébergé sur mon instance GitLab personnalisée, accessible à [cette adresse](https://git.florian-dev.fr/floriantrayon/Raven-Url-Shortener). Le dépôt GitHub est un miroir du dépôt GitLab, **mis à jour automatiquement**.\n\u003e\n\u003e **Les contributions publiques restent sur GitHub et sont les bienvenues** ; les pull requests validées y seront ensuite transférées manuellement sur GitLab pour être intégrées. 🙂\n\nVoici l'un de mes projets les plus aboutis à ce jour : **un service de raccourcissement de liens Internet (URL)**, inspiré du célèbre [Cparlà](https://cpar.la/) réalisé par... [mon entreprise](https://ciblemut.net/) !, mais avec une approche personnelle plus **moderne**, **personnalisable**, centrée sur la **sécurité** et la **confidentialité**.\n\nLe projet a été conçu avec une séparation **claire** entre le *front-end* et le *back-end*, permettant à chaque partie d'évoluer indépendamment. Le *front-end* repose actuellement sur [Next.js](https://nextjs.org/) 🤕, ma technologie de prédilection, mais une migration vers [SvelteKit](https://svelte.dev/docs/kit/introduction) 💘 est prévue afin de se débarrasser de ce qu'est devenu l'écosystème React, que je considère aujourd'hui comme une **horreur**.\n\nLe *back-end*, quant à lui, est construit sur le solide *framework* [Symfony](https://symfony.com/) 💪, et expose une API REST qui alimente le *front-end*, le rendant ainsi **totalement agnostique** vis-à-vis des évolutions futures. Ce *back-end* a également été pensé pour être utilisé par d'**autres services**, ce qui permet d'intégrer ce raccourcisseur à d'autres applications. Une documentation [Swagger](https://swagger.io/) (**en anglais uniquement**) a bien sûr été mise en place pour faciliter l'utilisation de l'API et accessible [ici](https://docs.url.florian-dev.fr/).\n\nÀ terme, toutes les nouvelles fonctionnalités seront d'abord implémentées côté API avant d'être intégrées dans le front-end, **garantissant ainsi une cohérence et une évolutivité optimales du projet**.\n\n\u003e [!TIP]\n\u003e Voir le fichier [SETUP.md](SETUP.md) pour consulter les instructions d'installation.\n\n\u003e [!NOTE]\n\u003e Tout ou partie du code peut contenir des commentaires dans ma langue natale (le français) afin de faciliter le développement. 🌐\n\n## In English\n\n\u003e [!IMPORTANT]\n\u003e Since April 2026, the project's code has been hosted on my custom GitLab instance, accessible at [this address](https://git.florian-dev.fr/floriantrayon/Raven-Url-Shortener). The GitHub repository is a mirror of the GitLab repository, **automatically kept up to date**.\n\u003e\n\u003e **Public contributions remain on GitHub and are welcome**; validated pull requests will then be manually transferred to GitLab to be integrated. 🙂\n\nHere's one of my most successful projects to date: **an URL Shortener service**, inspired by the famous [Cparlà](https://cpar.la/) created by... [my company](https://ciblemut.net/)!, but with a more **modern**, **personalizable**, **security** and **confidentiality** approach of my own.\n\nThe project was designed with a **clear** separation between the front-end and the back-end, allowing each part to evolve independently. The front-end is currently based on [Next.js](https://nextjs.org/) 🤕, my technology of choice, but a migration to [SvelteKit](https://svelte.dev/docs/kit/introduction) 💘 is planned to get rid of what React's ecosystem has become, which I now consider a **nightmare**.\n\nThe back-end, on the other hand, is built on the solid [Symfony](https://symfony.com/) 💪 framework and exposes a REST API that powers the front-end, making it **totally agnostic** to future evolutions. This back-end was also designed to be used by **other services**, allowing this URL Shortener to be integrated into other applications. A [Swagger](https://swagger.io/) documentation has of course been set up to make the API easier to use and is accessible [here](https://url.florian-dev.fr/api/docs).\n\nUltimately, all new functionalities will first be implemented on API before being integrated into the front-end, **ensuring optimal project consistency and scalability**.\n\n\u003e [!TIP]\n\u003e See the [SETUP.md](SETUP.md) file for setup instructions.\n\n\u003e [!NOTE]\n\u003e All or part of the code may contain comments in my native language (French) to ease development. 🌐\n\n![image](.gitlab/images/raven_url_shortener.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianlechat%2Fraven-url-shortener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorianlechat%2Fraven-url-shortener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianlechat%2Fraven-url-shortener/lists"}