Source code for supereffective.gg 's website.
Data can be found in https://github.com/itsjavi/supereffectice.gg/tree/main/src/lib/data-client
You will need Docker (for the local DB and mail server), Node v20 LTS and pnpm v8.
- Clone the repository
- Install dependencies:
pnpm install
- Run the website in development mode: run any of:
pnpm dev
. - Open http://localhost:3001 or run
pnpm open
to open the website in your browser. - You can register with any email. Emails will be logged in the console and also stored under
./local/mails
.
Or all in one command: pnpm build && pnpm dev && pnpm open
For other scripts, please check the package.json
files.
We use the following technologies, services and tools:
- We use Node v20 LTS
- pnpm v8 for package management
- Turborepo (turbo) to accelerate running scripts
- NextJS 14 + React 18 for the website
- CSS Modules for styling without styling libraries
- React Context for state management (to be replaced by Redux Toolkit or Zustand)
- MDX + FrontMater CMS as the local/static CMS
- Next Auth, Prisma and Neon.tech PostgreSQL for authentication and dex data storage
- Vercel (Pro tier) for hosting and deployments
- GitHub for hosting static JSON dataset
- CloudFlare for caching and DNS
- Docker, PostgreSQL and Maildev for local development environment
- Other tools: ESLint, Prettier, Husky, etc.
This project is a NextJS application with the following directory structure:
blogs
: the MDX content of the website pagespublic
: static assets (for the UI and also for the CMS pages)scripts
: Maintenance or development scriptssrc
:app
: Next.js App Routercomponents
: general reusable componentsconfig
: general app config (e.g. from env vars, json files or ts code)features/{name}/
: business logic in bounded contexts, following some DDD principlescomponents
: components specific to this domainhooks
: hooks specific to this domainstate
: domain state: contexts, objects and typesviews
: domain views: views composed with many other componentslib
: services and utilities specific to this domain
hooks
: generic hookslib
: generic libraries and services, or services that are not specific to a domainpokedata
: helpers to fetch the static data from the dataset CDN, and typesmailer
: mail client abstraction supportinglocal-fs
andresend.com
mdx
: helpers to extract and load MDX content from a directorypatreon
: Patreon API client abstractionutils
: general purpose utilities
styles
: global css styles
Contributions are welcome! Please read the contributing guidelines before submitting a PR.
For other feedback that is not related to issues, please use our Discord server
The data used in this project can be found as
minified JSON files in the
src/lib/data-client
folder of the project. Feel free to report data issues, suggest improvements and changes, or
submit a pull request with the changes or fixes.
In order to edit a minified JSON file, you will have to beautify it first. You can use the JSON Formatter & Validator website to do so.
Before submitting a pull request, make sure that the .min.json
files are minified again. You can use the same
JSON Formatter & Validator website to do so.
The original content (graphics and text created by us), and the design of this website is licensed under CC BY-NC-SA 4.0. Before using any material, please read the license and make sure you follow the terms and conditions, or contact us in case of doubt.
The source code of this website is licensed under the MIT License, except all the original graphics and articles that you may find in this repository (which are CC like as above mentioned).