This is the frontend for RelayList.com. The backend can be found at relaylist-api. The site uses Next.js and is hosted on Cloudflare Pages.
- Node.js 20.x or 22.x (recommended for compatibility)
- npm
- Clone the repository
- Install dependencies:
npm install
- Set up environment variables:
Edit
cp .env.local.example .env.local
.env.local
with your configuration if needed. - Start the development server:
npm run dev
- Open http://localhost:3000 in your browser
npm run dev
- Start development servernpm run build
- Build for productionnpm run start
- Start production servernpm run lint
- Run ESLintnpm run pages:build
- Build for Cloudflare Pagesnpm run pages:deploy
- Deploy to Cloudflare Pagesnpm run pages:dev
- Development build with Cloudflare optimizations
The application uses environment variables for configuration:
NEXT_PUBLIC_API_BASE_URL
- Base URL for the RelayList API (default: https://api.relaylist.com)
NEXT_PUBLIC_API_TIMEOUT
- API request timeout in milliseconds (default: 10000)
.env.local.example
- Example configuration file.env.local
- Local development overrides (not committed).env.production
- Production environment configuration
The site is deployed to Cloudflare Pages. See CLOUDFLARE.md for detailed deployment instructions and configuration.
- Build command:
npx @cloudflare/next-on-pages
- Output directory:
/.vercel/output/static
- Node.js version: 20.x
- Framework: Next.js 15.4.5
- UI Library: React Bootstrap
- Data Table: react-data-table-component
- HTTP Client: Axios
- Date/Time: Moment.js
- Hosting: Cloudflare Pages
- Content Security Policy (CSP) headers configured
- Security headers (X-Frame-Options, X-Content-Type-Options, etc.)
- React performance optimizations (memo, useMemo, useCallback)
- Accessibility improvements (ARIA labels, semantic HTML)
- Input validation for API responses
- CLAUDE.md - Development guidance for AI assistants
- TODO.md - Project roadmap and improvements
- CLOUDFLARE.md - Deployment instructions