Skip to content

🌐 Just Another Link Shortener - simple link shortener made with React and GraphQL

Notifications You must be signed in to change notification settings

xwirkijowski/jals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Header

JALS / Just Another Link Shortener v2

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.

Technology stack

Client

  • React 19
  • Next.js 15 with App router
  • TypeScript
  • Apollo Client + experimental-nextjs-app-support
  • PostCSS
    • Tailwind-CSS
    • Autoprefixer
  • classnames
  • Eslint

API server

  • Apollo Server
  • GraphQL
    • @graphql-tools β€” schema loading and merging utilities
    • graphql-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

Environment

  • Nginx
  • Redis-Stack

Functionality

[...]


Version 1 (2021)

See it in action! Production demo of v1 available at jals.wirkijowski.dev

Tech stack

  • 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

Functionality

  • 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.