mirror of
https://github.com/Hackdex-App/hackdex-website.git
synced 2026-03-21 17:54:09 -05:00
Update README
This commit is contained in:
parent
3550d32b37
commit
2a007c4be2
116
README.md
116
README.md
|
|
@ -1,36 +1,108 @@
|
|||
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||
# Hackdex
|
||||
|
||||
## Getting Started
|
||||
[](https://nextjs.org/)
|
||||
[](https://react.dev/)
|
||||
[](https://tailwindcss.com/)
|
||||
[](https://supabase.com/)
|
||||
[](https://aws.amazon.com/s3/)
|
||||
[](LICENSE.md)
|
||||
|
||||
First, run the development server:
|
||||
## What is Hackdex?
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
# or
|
||||
pnpm dev
|
||||
# or
|
||||
bun dev
|
||||
Hackdex is a community hub for discovering and sharing Pokémon romhack patches. Players link their own legally obtained base roms once, then easily patch locally in the browser and download the patched rom. Hackdex only stores patches, screenshots, and metadata—never any roms—so distribution stays practical without any of the legal pitfalls. Creators get a consistent place to publish, version, and present their projects.
|
||||
|
||||
## Core features
|
||||
|
||||
- **Discover**: curated hacks with screenshots, tags, versions, and summaries
|
||||
- **Submit**: metadata, screenshots, social links, and a BPS patch file
|
||||
- **Patch in the browser**: Powered by [RomPatcher.js](https://github.com/marcrobledo/RomPatcher.js); linked base roms stay on the user's device
|
||||
- **Safe delivery**: short-lived signed URLs for assets and downloads; no rom storage required
|
||||
|
||||
## Tech stack
|
||||
|
||||
- Next.js 15 (App Router), TypeScript, React 19, Tailwind CSS 4
|
||||
- Supabase (Postgres, Auth, Storage) for data, auth, and cover images
|
||||
- S3-compatible object storage (Minio locally or preferred provider) for patch files (`patches` bucket)
|
||||
- In-browser patching with RomPatcher.js; local persistence with IndexedDB and the File System Access API
|
||||
|
||||
## High-level architecture
|
||||
|
||||
- UI: Next.js App Router with a mix of server and client components
|
||||
- Data: Supabase tables for hacks, tags, covers, patches; signed URLs for `hack-covers`
|
||||
- Patches: stored in an S3-compatible bucket `patches`; downloads use short-lived signed URLs via an API route
|
||||
- Auth: Supabase SSR helpers manage cookies; client SDK for browser calls
|
||||
|
||||
## Contribution guidelines
|
||||
|
||||
- PRs welcome. Keep changes small, typed, and accessible
|
||||
- Prefer clear naming, early returns, and avoid `any`
|
||||
- Match existing Tailwind and component patterns
|
||||
|
||||
## Security & legal notes
|
||||
|
||||
- **Hackdex _does not host roms_ and never will; users supply them locally during patching**
|
||||
- Patching happens entirely in the browser against the user's local file
|
||||
|
||||
---
|
||||
|
||||
## Local development setup
|
||||
|
||||
Set up local Supabase for database, auth, and storage, and an S3-compatible bucket for patch files.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 20+
|
||||
- Docker and the Supabase CLI
|
||||
- An S3-compatible service (Minio locally, or a cloud provider like AWS S3 or Cloudflare R2)
|
||||
|
||||
### Environment variables (`.env.local`)
|
||||
|
||||
Provide your Supabase project URL, publishable key, public site urls, and S3 connection details:
|
||||
|
||||
```
|
||||
NEXT_PUBLIC_SUPABASE_URL=
|
||||
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
|
||||
|
||||
NEXT_PUBLIC_SITE_URL=
|
||||
NEXT_PUBLIC_SITE_DOMAIN=
|
||||
|
||||
S3_ENDPOINT=
|
||||
S3_PORT=
|
||||
S3_ACCESS_KEY_ID=
|
||||
S3_SECRET_ACCESS_KEY=
|
||||
S3_USE_SSL=
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
### Supabase (local)
|
||||
|
||||
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||
Follow the official guide to run Supabase locally with the CLI (includes Studio):
|
||||
|
||||
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||
- Supabase CLI getting started: [Local development with the Supabase CLI](https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroups=platform&platform=macos&queryGroups=access-method&access-method=studio)
|
||||
|
||||
## Learn More
|
||||
Typical flow:
|
||||
|
||||
To learn more about Next.js, take a look at the following resources:
|
||||
1) Initialize and start services using the CLI
|
||||
2) Note the printed API URL and publishable key; set them in `.env.local` as shown above
|
||||
3) Apply this repository’s migrations in `supabase/migrations`
|
||||
4) Create a Supabase Storage bucket named `hack-covers` (private is fine; the app uses signed URLs)
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||
### S3‑compatible storage for patches
|
||||
|
||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||
- Create a bucket named `patches`
|
||||
- Point the `S3_*` environment variables to your S3 endpoint (Minio locally or your vendor)
|
||||
|
||||
## Deploy on Vercel
|
||||
### Install & run
|
||||
|
||||
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||
```
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||
For easier debugging in VS Code, use the launch configurations in `.vscode/launch.json` (full stack, server-side, or client-side).
|
||||
|
||||
---
|
||||
|
||||
## License & Branding
|
||||
|
||||
- MIT licensed; see [LICENSE.md](LICENSE.md)
|
||||
- Branding Notice: the name “Hackdex” is reserved for use by the original project; see `LICENSE.md`
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user