URL Shortener

A Simple URL Shortener for exploring Rust and other technologies.

Project structure based on spa5k/monorepo-typescript-rust, and my extremely limited knowledge of Turborepo, Cargo workspaces, and pnpm workspaces.

TODO: playwright nextjs & solid-start tests

TODO: prettier/eslint github actions

TODO?: shuttle deploy github action

Apps, Packages and Crates

TODO?: try to [on a non-very-basic level] port React Query to Yew

TODO: logger package

  • server-actix: an Actix Web web server, with Shuttle infrastructure
  • common: shared Rust code
  • yew-query: a VERY basic port of Tanstack Query for Yew
  • web-solid-start: a Solid-Start app
  • web-nextjs: a Next.js app
  • web-yew: a Yew app
  • web-svelte-kit: a SvelteKit app
  • api: API to interact with the server
  • ui-core: 'core' component library, contains styles and variants using class-variance-authority
  • ui-solid: Solid component library
  • ui-react: React component library
  • ui-svelte: Svelte component library
  • eslint-config-custom: base eslint configuration
  • eslint-config-custom-solid: Solid eslint configuration (includes eslint-plugin-solid)
  • eslint-config-custom-next: Next.Js eslint configuration (includes eslint-config-next)
  • tailwind-config: shared Tailwind CSS configuration
  • tsconfig: tsconfig.jsons used throughout the monorepo

Deployments

App Port (dev) Deployment
server-actix 8000 https://url-shortener-server-actix.shuttleapp.rs/
web-solid-start 3000 https://url-shortener-solid-start.vercel.app/
web-nextjs 3001 https://url-shortener-nextjs-eight.vercel.app/
web-yew 3002 https://url-shortener-server-actix.shuttleapp.rs/yew/
web-svelte-kit 5173 https://url-shortener-svelte-kit.vercel.app/

Useful Links

App progress

TODO: change to table?

  • Actix Server
    • Shorten URL
    • Lengthen URL
    • Register
    • Login
  • Solid-Start
    • Home (shorten URL)
    • Redirect
    • [~] Stats
    • [~] URL Error Page
    • Login
    • Register
  • NextJs
    • Home
    • Redirect
    • [~] Stats
    • [~] URL Error Page
    • Login
    • Register
  • Yew
    • Home
    • Redirect
    • [~] Stats
    • [~] URL Error Page
    • Login
    • Register
  • SvelteKit
    • Home
    • Redirect
    • [~] Stats
    • [~] URL Error Page
    • Login
    • Register
  • Tauri
    • Home
    • Redirect
    • Stats

Roadmap

  • [~] Auth
    • View all my short URLs
      • Stats
    • Deletion of short URLs
  • Tauri

Web Apps

Routes

  • / - Home
  • /:id - Redirect
    • /:id/stats - Stats
      • more in future hopefully
  • /login
  • /register

Turborepo starter

This is an official starter Turborepo.

Useful Links

Learn more about the power of Turborepo: