Skip to content

i-wav/pastebin-lite

Repository files navigation

Pastebin-Lite

This is a Pastebin-like web application built using Next.js (App Router).
It allows users to create text pastes and share a unique link to view them.

Each paste can optionally expire after a given time (TTL) or after a maximum number of views.
Once a constraint is triggered, the paste becomes unavailable.

The project is designed to work correctly in serverless environments and is suitable for automated evaluation.

Features

  • Create a text paste
  • Receive a shareable URL
  • View pastes via a public link
  • Optional time-based expiry (TTL)
  • Optional view-count limit
  • Safe content rendering (prevents script execution)
  • Persistent storage across requests

Tech Stack

  • Next.js (App Router)
  • Node.js
  • Upstash Redis (persistence layer)

Getting Started

First, install the dependencies:

npm install
Environment Setup
Create a .env.local file in the project root:

env

UPSTASH_REDIS_REST_URL=your_upstash_redis_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token
NEXT_PUBLIC_BASE_URL=http://localhost:3000

Run the Development Server
npm run dev

Open your browser and visit: http://localhost:3000

Project Structure

app/
├── page.js                 # Homepage (create paste UI)
├── p/
│   └── [id]/
│       └── page.js         # View paste page (HTML)
├── api/
│   └── pastes/
│       ├── route.js        # Create paste API
│       └── [id]/
│           └── route.js    # Fetch paste API
├── lib/
│   └── redis.js            # Redis client

Persistence Layer

  • This project uses Upstash Redis for persistence.
  • Pastes are stored as Redis hashes.
  • Atomic Redis operations are used for view counting. -Data persists across serverless requests.
  • Redis key versioning is used to avoid schema conflicts.

Design Notes

  • All business logic (validation, TTL checks, view limits) is handled in API routes
  • UI pages never access Redis directly
  • Deterministic time support is included for automated testing
  • Paste content is rendered safely to prevent XSS vulnerabilities

Learn More

To learn more about Next.js, take a look at the following resources:

  • Next.js Documentation

Deploy on Vercel

The easiest way to deploy this Next.js app is to use the Vercel Platform.

For more details, see the Next.js deployment documentation.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors