A simple solution for shortening links built with React, Next.js and GraphQL with basic safety features. Initially designed and developed in 2021 as a personal challenge and to get some new experience.
I began work on a refactor in december 2024. Primary goal was to gain practical knowledge of current React (v19) and Next.js (v15) features, including the new App router. As a secondary goal, client application was to fully leverage TailwindCSS and PostCSS features.
- React 19
- Next.js 15 with App router
- TypeScript
- Apollo Client +
experimental-nextjs-app-support
- PostCSS
- Tailwind-CSS
- Autoprefixer
classnames
- Eslint
- Apollo Server
- GraphQL
@graphql-tools
β schema loading and merging utilitiesgraphql-scalars
β additional scalars (e.g.EmailAddress
)
- Redis & Redis OM β Redis client and ORM interface
- Mongoose β ORM interface for MongoDB
- Eudoros - logging utility
- Luxon β date utilities
- Resend β transactional emails
- ulid β internal unique identifiers
- Nginx
- Redis-Stack
[...]
See it in action! Production demo of v1 available at jals.wirkijowski.dev
- Client
- React β frontend framework
- React Router β navigation
- SCSS β CSS preprocessor
- CSS Modules β styling approach
- BEM β class naming methodology
- Apollo Client β communication with API
- API server
- Apollo Server β GraphQL server
- Mongoose β ORM interface for MongoDB
- Ioredis β Redis client used for cache
- Sentry.io β monitoring & error tracking
- Dotenv β environment variables loader
- Functional link shortening
- Link inspection using
+
as a modifier at the end of the URL - Collected data included user's platform, if is mobile device and timestamp of click
- Users were redirected the moment a click is registered (positive response from API)
- If a link is flagged multiple times, users were warned about it and asked to confirm before proceeding with the redirect.
No license is available.