Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Authnest

Authnest is a public archive and runnable demo for a retired authentication product. The project explored consumer-controlled app identities: users could keep app sign-ins and app email separate from their personal inbox, while developers got OAuth-style integration, redirect URI controls, app policies, and stricter email identity checks.

Live archive: authnest.com

The live Authnest service was retired on April 2, 2026. This repository is a safe public snapshot of the product concept. It does not contain production credentials, cloud resources, signing keys, live inboxes, or real user/developer data.

What Is Included

  • A small Express archive server for local review
  • A static Cloudflare Pages-ready site in public/
  • A local-only representation of an OAuth authorization-code flow
  • 410 Gone responses for retired OAuth, discovery, and live API routes
  • Structured archive data with startup/test validation
  • Sanitized legacy implementation snapshots under legacy/

Architecture

.
|-- index.js                  # Local server entrypoint
|-- src/
|   |-- archive-app.js        # Express app factory and demo API routes
|   |-- archive-data.js       # Canonical product/archive data
|   `-- archive-validation.js # Lightweight data shape validation
|-- public/                   # Static archive site for Cloudflare Pages
|-- scripts/                  # Build helpers for generated static assets
|-- tests/                    # Node test runner coverage
|-- docs/                     # Project history and publication notes
`-- legacy/                   # Sanitized historical source snapshots

The canonical archive content lives in src/archive-data.js. Running npm run build:data generates public/archive-data.js so the static Pages site uses the same product data as the local Express server.

Requirements

  • Node.js 20 or newer
  • npm

No database, queue, mail provider, Redis instance, or cloud account is required to run the archive.

Setup

npm install
npm run build:data
npm start

The local server listens on http://localhost:3000 by default.

Commands

npm start                  # Run the local archive server
npm run dev                # Run the server with Node watch mode
npm run build:data         # Regenerate public/archive-data.js
npm test                   # Run Node test runner tests
npm run check              # Regenerate data, syntax-check, and test
npm run deploy:pages       # Deploy public/ with Wrangler
npm run deploy:pages:preview

Environment Variables

Name Required Default Description
PORT No 3000 Local Express server port. Must be an integer from 1 to 65535.

The archive intentionally has no production secrets or service bindings.

Local Routes

Route Purpose
/ Archive UI and browser-only demo
/health Local service health check
/api/archive Canonical archive JSON
/api/demo/authorize Local-only demo authorization endpoint
/api/demo/token Local-only demo token exchange endpoint
/oauth2/*, /.well-known/*, retired /api/* 410 Gone sunset responses

Demo authorization codes are in-memory, expire after five minutes, and are single-use. They are only a product representation; they are not real OAuth credentials.

Static Deployment

The deployable site is the public/ directory. It does not need the Express server in production because the archive data and browser demo are bundled as static assets.

Recommended Cloudflare Pages settings:

Setting Value
Build command npm run check
Build output directory public
Production branch main

The included public/_headers file applies a restrictive CSP and basic security headers. The included public/_redirects file keeps retired service paths from appearing as live endpoints on the static deployment.

Operational Notes

  • Treat this repository as an archive and portfolio snapshot, not the retired production service.
  • Keep .env files, private keys, logs, credential exports, cloud configuration, inbox data, and real customer data out of the repo.
  • The legacy/ directory is historical source only. Do not deploy it or treat its routes as supported runtime code.
  • If archive content changes, run npm run build:data before committing so the static bundle stays synchronized with src/archive-data.js.

Additional context:

About

Public archive and local demo for the retired Authnest authentication product.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages