Hello there and welcome! If you're reading this, you've discovered the front end for the Meem app! The Meem app is open source and released under the MIT license. In addition, we have gone to some lengths to make it as extensible as possible. You can find full documentation on the Meem Protocol and more on our GitBook site.
The Meem web app uses the following main external dependencies (among others):
- NextJS
- Mantine (UI components library)
- Apollo GraphQL
- Meem SDK API package
- Meem SDK React package
- Meem SDK Contracts package
The Meem SDK currently supports the following Ethereum chains:
- Polygon (primary)
- Optimism
- Arbitrum
- Mumbai Testnet
- Goerli Testnet
- Arbitrum Goerli Testnet
- Optimism Goerli Testnet
- Download this repository using the
gitclient of your choice - In the root directory, run
yarnto install dependencies - Copy
.env.exampleand rename it to.env - Obtain an Alchemy API key and RPC URLs (or contact us to use ours!), then add them to the
.envfile - Run
yarn localto run the app - Access the app at http://localhost:3001
The Meem web app is currently structured as follows:
- The
componentsfolder contains React Functional Components that make up the contents of Meem pages. - Within the
componentsfolder, you'll find distinct subfolders for theHome,AgreementHome,Admin,Roles,Profile,Create,Authenticate,Extensionsand other page content. - Also within the
componentsfolder, you'll find theMeemThemefile, containing standard CSS styles and colors used by all components in Meem. You can make use of the MeemTheme by addingconst { classes: meemTheme } = useMeemTheme()at the top of your component and addingclassName={meemTheme.<style>}inside the relevant JSX component. - The
modelfolder contains view models for various parts of the Meem GraphQL API that either require local processing (i.e. looking up tokens) or are not yet convenient enough to be a 1:1 fit for the frontend. We are working on eventually removing the need for these models entirely, but you may lean on them as needed for now. - The
pagesfolder, conforming to NextJS's site file/folder structure, contains the various site pages, each of which containing page meta tags and in some cases Server Side Prop fetching (for example, fetching the community's name and updating the site title, or fetching a page preview image). - The site as a whole makes use of several
Providerclasses, many of which are part of the Meem React SDK. Using these providers allows you to easily retrieve user identites, club data or make queries to GraphQL directly. You can find usages of these providers in_app.tsxand elsewhere.
You're, of course, free to do whatever you like with this code under the terms of the MIT license. However, if you'd like to contribute to the project, just open a PR with your changes and we'll take a look right away. Contributions of any kind are welcome!
View our full documentation here
Don't hesitate to talk to us in Discord!