Scratch Incubator hosts a number of interesting, open-source, and arguably useful experiments and tools. It's also a website to organize Scratch game jams!
Incubator is written in Next.js and React.
All contributions are welcome. If you have an idea for a new feature or experiment, open a discussion about it. If your idea is approved you can help coding it and submit a pull request (PR) once you're done. You can also help squash bugs and other issues.
Please use Yarn as your package manager when working on Incubator.
This will help you find your way around the codebase.
- root directory
public
- Contains static files, such as the favicon.src
- Contains the main source code of Incubatorcomponents
- Custom React components specifically crafted for IncubatorJam
- Components for Scratch game jams
database
- Driver files that directly interact with the MongoDBSCHEMAS.md
- Database document structure
design-system
- Reusable components for building user interfaceshooks
- Custom React hooks for Incubatorpages
- Contains the pages of the website, which are mapped to the directory structure of this folderapi
- All API routesscratch-jams
- Routes related to Scratch game jamsindex.js
- The homepage
utils
- Various utility files and methodsconstants.js
- Contains global constants, such as the array of whitelisted image hosts for Scratch game jams
.env.local
- This file is not uploaded to GitHub. It is necessary for running a local instance of Incubator. It should contain the following env key-value pairs:SECRET_COOKIE_PASSWORD
: random password for encryptingiron-session
cookies;WEBSITE_URL
: the URL of the website. On localhost, this should be set tohttp://localhost:3000
;MONGODB_URI
: the MongoDB connection URI. This should be in the following format:mongodb+srv://<username>:<password>@<connection-uri>.mongodb.net/<database>?retryWrites=true&w=majority
.
jsconfig.json
- Import path aliases (e.g.,import { Box } from '@design-system'
)next.config.json
- Important Next.js configuration options. This file should generally not be touched.package.json