diff --git a/README.md b/README.md index af4c00d2..38eb72ff 100644 --- a/README.md +++ b/README.md @@ -8,61 +8,40 @@ [![discord](https://img.shields.io/badge/join-bibliothecadao-black?logo=discord&logoColor=white)](https://discord.gg/realmsworld) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) -![background](/docs/assets/images/bg.png) +![background](/apps/docs/assets/images/bg.png) -# Realms.World +# Realms.World - The Hub for the AW -## The portal to the Realms Autonomous World +### Realms.World is the information and activity hub for the Realms Autonomous World. -Realms.World is the information and activity hub for entrance to the Realms Autonomous World. It includes a comprehensive and interactive marketplace dedicated to the Loot and Realms ecosystem (both on Ethereum and Starknet), ecosystem functionality such as bridging, staking, and NFT minting, and information about the various games of the World. The client is built on Next.js 13, utilizing server and client components to achieve high performance and scalability. +[Realms.World](https://realms.world) is the central hub for the Realms Autonomous World, offering a comprehensive marketplace NFTs on Ethereum and Starknet. Features include: -#### Table of Contents +- L1 Marketplace +- L2 onchain Marketplace +- Onchain Game Catalog +- BibliothecaDAO metrics -- Getting Started -- Contributing -- License +#### Quick Links -### Getting Started - -- [`apps/nextjs`](https://bibliothecadao.github.io/frontend) - The next.js Frontend -- [`packages/subgraph`](https://bibliothecadao.github.io/subgraph) - The L1 Starknet Messaging Indexer for Bridge Transactions -- [`packages/apibara`](https://bibliothecadao.github.io/starknet-indexer) = The L2 indexer for Bridge and Marketplace - -### Running the app - -This will launch storybook and the Realms.World client. - -```bash -bun i -``` - -```bash -bun run dev -``` - -## Enviroment Variables - -Depending on which environment you want to run, either copy the values from `.env.sepolia` or `.env.mainnet` into your `.env` file. - -### Documentation - -Available at [Realms.World Docs](https://docs.realms.world) +- [Getting Started](#getting-started) +- [Client Documentation](https://docs.realms.world/client-development) +- [Developer Documentation](https://docs.realms.world) +- [Add a Game](https://docs.realms.world/games) +- [Add a Event](https://docs.realms.world/events) +- [Add a Post](https://docs.realms.world/posts) +- [License](./LICENSE) ### Contributing -We welcome contributions from the community to help improve Realms.World. If you are interested in contributing, please follow these steps: +We welcome contributions from the community to help improve Realms.World. -1. Fork the repository. +1. Fork the repository. Read the [guide](https://docs.realms.world/) 2. Create a new branch for your changes. -3. Make your changes and commit them to your branch. +3. Make your changes and commit them to your branch. Make sure CI passes. 4. Submit a pull request with a detailed description of your changes. We will review your contribution and provide feedback. Once your changes have been approved, they will be merged into the main branch. -### To add a Game - -Check out the docs at [Add Data Docs](https://docs.realms.world/data) - WIP for Loot Survivor mods - -### License +## License Realms.World is an open-source project released under the MIT License. This license allows you to freely use, modify, and distribute the code, as long as you include the original copyright and permission notice in any copy of the software or substantial portions of it. diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore deleted file mode 100644 index 91f7dfce..00000000 --- a/apps/docs/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# Copied from https://github.com/github/gitignore/blob/main/Jekyll.gitignore -# Ignore metadata generated by Jekyll -_site/ -.sass-cache/ -.jekyll-cache/ -.jekyll-metadata - -# Ignore folders generated by Bundler -.bundle/ -vendor/ \ No newline at end of file diff --git a/apps/docs/Gemfile b/apps/docs/Gemfile deleted file mode 100644 index effebae0..00000000 --- a/apps/docs/Gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source 'https://rubygems.org' - -gem "jekyll", "~> 4.3.2" # installed by `gem jekyll` -# gem "webrick" # required when using Ruby >= 3 and Jekyll <= 4.2.2 - -gem "just-the-docs", "0.6.0" # pinned to the current release -# gem "just-the-docs" # always download the latest release \ No newline at end of file diff --git a/apps/docs/Gemfile.lock b/apps/docs/Gemfile.lock deleted file mode 100644 index 5601210d..00000000 --- a/apps/docs/Gemfile.lock +++ /dev/null @@ -1,82 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.4) - public_suffix (>= 2.0.2, < 6.0) - colorator (1.1.0) - concurrent-ruby (1.2.2) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.15.5) - forwardable-extended (2.6.0) - google-protobuf (3.23.4-x86_64-linux) - http_parser.rb (0.8.0) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - jekyll (4.3.2) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (>= 0.3.6, < 0.5) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (3.0.0) - sass-embedded (~> 1.54) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - just-the-docs (0.6.0) - jekyll (>= 3.8.5) - jekyll-include-cache - jekyll-seo-tag (>= 2.0) - rake (>= 12.3.1) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.0.3) - rake (13.0.6) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.5) - rouge (4.1.2) - safe_yaml (1.0.5) - sass-embedded (1.64.1) - google-protobuf (~> 3.23) - rake (>= 13.0.0) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.4.2) - webrick (1.8.1) - -PLATFORMS - x86_64-linux - -DEPENDENCIES - jekyll (~> 4.3.2) - just-the-docs (= 0.6.0) - -BUNDLED WITH - 2.3.26 diff --git a/apps/docs/README.md b/apps/docs/README.md deleted file mode 100644 index bf0e7cd0..00000000 --- a/apps/docs/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## Building and previewing your site locally - -Assuming [Jekyll] and [Bundler] are installed on your computer: - -1. Change your working directory to the root directory of your site. - -2. Run `bundle install`. - -3. Run `bundle exec jekyll serve` to build your site and preview it at `localhost:4000`. - - The built site is stored in the directory `_site`. - -## Customization - -The Docs site is built using the Just The Docs Jekyll theme on Github Pages (dev branch). [Check the documentations](https://just-the-docs.github.io/just-the-docs/) to learn more about how to use this theme. diff --git a/apps/docs/_config.yml b/apps/docs/_config.yml deleted file mode 100644 index 8bc05798..00000000 --- a/apps/docs/_config.yml +++ /dev/null @@ -1,8 +0,0 @@ -title: Realms World -description: Documentation for the Realms.World website, the portal to the Realms Autonomous World -theme: just-the-docs -logo: "/assets/images/logo.png" -url: https://docs.realms.world -color_scheme: dark -aux_links: # remove if you don't want this link to appear on your pages - Github Repo: https://github.com/BibliothecaDAO/RealmsWorld diff --git a/apps/docs/assets/images/games.png b/apps/docs/assets/images/games.png deleted file mode 100644 index 513f086e..00000000 Binary files a/apps/docs/assets/images/games.png and /dev/null differ diff --git a/apps/docs/frontend/index.md b/apps/docs/frontend/index.md deleted file mode 100644 index 6262e58a..00000000 --- a/apps/docs/frontend/index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Frontend -layout: default -nav_order: 2 -has_children: true ---- - -# Realms.World Frontend - -## Development Guidelines - -### Overview - -[Realms.World](https://realms.world){:target="\_blank" rel="noopener"} is built using Next.js 14, which allows for a seamless integration of server and client components. The application aims to maximize performance and scalability by leveraging Vercel's cache and local cache and is built on top of the [T3 Stack](https://github.com/t3-oss/create-t3-turbo) - -### Server Components - -Any component/data that can be rendered/fetched on the server should be rendered on the server to optimize the user experience. Page layouts are the most obvious examples of server-rendered components. Within these layouts, server components can be used to add interactivity. This abstraction ensures that page loads are as fast as possible for the end user. - -## Getting Started - -To start developing on Realms.World run the following commands from the project root: - -```bash -bun i -``` - -```bash -bun run dev -``` - -## Enviroment Variables - -Depending on which environemnt you want to run, either copy the values from `.env.sepolia` or `.env.mainnet` into your `.env` file. - -## Indexers - -You only need to run the subgraph and/or Apibara indexers locally if you want to preview changes, otherwise just use the deployed instances/database URL (as set in the `.env` file) - -## Add a Game/Collection/Token - -See [`Data`](/data) diff --git a/apps/docs/frontend/marketplace.md b/apps/docs/frontend/marketplace.md deleted file mode 100644 index c349364b..00000000 --- a/apps/docs/frontend/marketplace.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Marketplace -nav_order: 2 -parent: Frontend ---- - -# Realms.World Marketplaces - -## Ethereum (L1 Realms) - -Functionality for the L1 Marketplace is provided by [Reservoir Protocol](https://reservoir.tools/){:target="\_blank" rel="noopener"} - check out the [docs](https://docs.reservoir.tools/reference/reservoirkit){:target="\_blank" rel="noopener"} - -![Marketplace Preview](/assets/images/realms-marketplace.png) -[Realms Marketplace](https://realms.world/collection/0x7afe30cb3e53dba6801aa0ea647a0ecea7cbe18d){:target="\_blank" rel="noopener"} - -## Starknet (L2 Realms + Game Assets) - -TBA - currently being scoped diff --git a/apps/docs/index.md b/apps/docs/index.md deleted file mode 100644 index f18c7a24..00000000 --- a/apps/docs/index.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Home -layout: home -nav_order: 1 ---- - - - - - - - - -[![discord](https://img.shields.io/badge/join-bibliothecadao-black?logo=discord&logoColor=white)](https://discord.gg/realmsworld){:target="\_blank" rel="noopener"} -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT){:target="\_blank" rel="noopener"} - -![background](/assets/images/bg.png) - -# Realms.World - -## The portal to the Realms Autonomous World - -## Overview - -[Realms.World](https://realms.world){:target="\_blank" rel="noopener"} serves as the central hub for accessing the Realms Autonomous World. This platform offers a comprehensive marketplace dedicated to the Loot and Realms ecosystem on both Ethereum and Starknet. It encompasses essential ecosystem functionalities like bridging, staking, and NFT minting. Additionally, you'll find valuable insights about the various games within the World. Built on Next.js 13, Realms.World leverages server and client components for optimal performance and scalability. - -## Packages - -The Realms.World platform consists of a few key packages: - -- [`apps/nextjs`](/frontend): The Next.js Frontend - -- [`packages/subgraph`](/subgraph): The L1 Starknet Messaging Indexer for Bridge Transactions -- [`packages/apibara`](/starknet-indexer): The L2 indexer for Bridge and NFT Transactions + Metadata -- [`packages/api`](/trpc): The TRPC router used by the frontend to communicate with the database -- [`packages/graphql-server`](/graphql-endpoint): A GraphQL endpoint for the L2 Indexed data (currently used by Loot Survivor) -- [`packages/db`](/drizzle-db): The Drizzle ORM containing schema for the Postgres Database (currently set up for the Neon.tech serverless database - but could be adapted to a local or Planetscale without too much trouble) - -## Contributing - -We greatly value contributions from the community to enhance the Realms.World experience. To get involved, follow these steps: - -1. Fork the repository. -2. Create a new branch for your changes. -3. Implement your changes and commit them to your branch. -4. Submit a pull request that includes a detailed description of your modifications. - -Our team will review your contribution and offer feedback. Once approved, your changes will be merged into the main branch. - -## License - -Realms.World is an open-source project released under the MIT License. This license grants you the freedom to use, modify, and distribute the code, provided you retain the original copyright and permission notice in all copies or substantial portions of the software. diff --git a/apps/docs/starknet-indexer.md b/apps/docs/starknet-indexer.md deleted file mode 100644 index f2cecf40..00000000 --- a/apps/docs/starknet-indexer.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Starknet Indexer -layout: default ---- - -# Starknet Bridge And NFT Indexer with Apibara - -This repository uses [Apibara](https://github.com/apibara/apibara){:target="\_blank" rel="noopener"} to index the the various NFT contract transfers and Starknet Lords Bridge L2 Withdrawal Initiated data. You only need to run this indexer locally if you want to test changes to the schema - otherwise point your client to our deployed instance at: - -## Getting Started diff --git a/apps/nextjs/next.config.js b/apps/nextjs/next.config.js index 40f12eaa..2e7dc42d 100644 --- a/apps/nextjs/next.config.js +++ b/apps/nextjs/next.config.js @@ -1,6 +1,8 @@ -// Importing env files here to validate on build -import "./src/env.js"; -import "@realms-world/auth/env.js"; +import { fileURLToPath } from "url"; +import createJiti from "jiti"; + +// Import env files to validate at build time. Use jiti so we can load .ts files in here. +createJiti(fileURLToPath(import.meta.url))("./src/env"); import createMDX from "@next/mdx"; @@ -12,6 +14,7 @@ const config = { "@realms-world/api", "@realms-world/auth", "@realms-world/db", + "@realms-world/ui" ], /** We already do linting and typechecking as separate tasks in CI */ eslint: { ignoreDuringBuilds: true }, diff --git a/apps/nextjs/src/app/blog/PostGrid.tsx b/apps/nextjs/src/app/blog/PostGrid.tsx index 5e4e9f74..d24aa86c 100644 --- a/apps/nextjs/src/app/blog/PostGrid.tsx +++ b/apps/nextjs/src/app/blog/PostGrid.tsx @@ -10,7 +10,6 @@ async function getData() { const PostGrid = async () => { const { articles } = await getData(); - console.log(articles); const postPreviews = articles.map((post, index) => ( )); diff --git a/apps/nextjs/src/app/layout.tsx b/apps/nextjs/src/app/layout.tsx index e8c1d527..95e246b0 100644 --- a/apps/nextjs/src/app/layout.tsx +++ b/apps/nextjs/src/app/layout.tsx @@ -10,7 +10,6 @@ import "@rainbow-me/rainbowkit/styles.css"; import { cache } from "react"; import { headers } from "next/headers"; -import { env } from "@/env"; import { TRPCReactProvider } from "@/trpc/react"; import { Footer } from "./_components/Footer"; @@ -77,7 +76,7 @@ const description = export const metadata: Metadata = { metadataBase: new URL( - env.VERCEL_ENV === "production" + process.env.VERCEL_ENV === "production" ? "https://realms.world" : "http://localhost:3000", ), diff --git a/apps/nextjs/src/env.js b/apps/nextjs/src/env.ts similarity index 74% rename from apps/nextjs/src/env.js rename to apps/nextjs/src/env.ts index f583bb06..d51bba61 100644 --- a/apps/nextjs/src/env.js +++ b/apps/nextjs/src/env.ts @@ -1,17 +1,13 @@ import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; +import { env as authEnv } from "@realms-world/auth/env"; export const env = createEnv({ + extends: [authEnv], shared: { NODE_ENV: z .enum(["development", "production", "test"]) .default("development"), - VERCEL_ENV: z.enum(["development", "preview", "production"]).optional(), - VERCEL_URL: z - .string() - .optional() - .transform((v) => (v ? `https://${v}` : undefined)), - PORT: z.coerce.number().default(3000), }, /** * Specify your server-side environment variables schema here. This way you can ensure the app isn't @@ -31,11 +27,8 @@ export const env = createEnv({ /** * Destructure all variables from `process.env` to make sure they aren't tree-shaken away. */ - runtimeEnv: { + experimental__runtimeEnv: { NODE_ENV: process.env.NODE_ENV, - VERCEL_URL: process.env.VERCEL_URL, - PORT: process.env.PORT, - DATABASE_URL: process.env.DATABASE_URL, // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR, }, skipValidation: diff --git a/bun.lockb b/bun.lockb index f367c18c..37b07f4c 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/documentation/README.md b/documentation/README.md new file mode 100644 index 00000000..417e3136 --- /dev/null +++ b/documentation/README.md @@ -0,0 +1 @@ +## Docs to Realms.World Client diff --git a/documentation/docs/components/Footer.tsx b/documentation/docs/components/Footer.tsx new file mode 100644 index 00000000..58a2c0fa --- /dev/null +++ b/documentation/docs/components/Footer.tsx @@ -0,0 +1,8 @@ +export function Footer() { + return ( +
+
Released under the MIT License.
+
Copyright © 2022-present Realms World
+
+ ); +} diff --git a/documentation/docs/pages/client-development.md b/documentation/docs/pages/client-development.md new file mode 100644 index 00000000..5f634719 --- /dev/null +++ b/documentation/docs/pages/client-development.md @@ -0,0 +1,41 @@ +# Client Development + +### Overview + +[Realms.World](https://realms.world) is built using Next.js 14, which allows for a seamless integration of server and client components. The application aims to maximize performance and scalability by leveraging Vercel's cache and local cache and is built on top of the [T3 Stack](https://github.com/t3-oss/create-t3-turbo) + +### Server Components + +Any component/data that can be rendered/fetched on the server should be rendered on the server to optimize the user experience. Page layouts are the most obvious examples of server-rendered components. Within these layouts, server components can be used to add interactivity. This abstraction ensures that page loads are as fast as possible for the end user. + +## Getting Started + +We use [bun](https://bun.sh/) as package manager so you will need it installed if you don't already have it. + +```bash +curl -fsSL https://bun.sh/install | bash +``` + +Depending on which enviroment you want to run, either copy the values from `.env.sepolia` or `.env.mainnet` into your `.env` file. + +```bash +# To set up environment variables for Sepolia +cp .env.sepolia .env + +# To set up environment variables for Mainnet +cp .env.mainnet .env +``` + +Once bun and your .env is setup, run: + +```bash +bun i +``` + +```bash +bun run dev +``` + +## Indexers + +You only need to run the subgraph and/or Apibara indexers locally if you want to preview changes, otherwise just use the deployed instances/database URL (as set in the `.env` file) diff --git a/documentation/docs/pages/events.md b/documentation/docs/pages/events.md new file mode 100644 index 00000000..8baaabdb --- /dev/null +++ b/documentation/docs/pages/events.md @@ -0,0 +1,25 @@ +## Add an Event + +### Steps + +1. Fork the repo and add to the object in the events object within the [directory](https://github.com/BibliothecaDAO/RealmsWorld/blob/main/apps/nextjs/src/constants/events.ts) + +```js +export const events: Event[] = [ + { + name: "Paved: Lord of the Board", + description: "A Paved Tourney for 2500 Lords in prizes.", + startDate: "2024-03-28", + endDate: "2024-04-04", + location: "Realms", + image: "/events/paved2.png", + website: "https://paved.gg", + slug: "paved", + type: "play" + }, +]; +``` + +2. For the image include it in the events image [directory](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/apps/nextjs/public/events) and make sure it is reference correctly in the json + +3. Submit a PR with your changes! diff --git a/apps/docs/data.md b/documentation/docs/pages/games.md similarity index 84% rename from apps/docs/data.md rename to documentation/docs/pages/games.md index 6f58d114..cc070b7e 100644 --- a/apps/docs/data.md +++ b/documentation/docs/pages/games.md @@ -1,16 +1,11 @@ ---- -title: Data -layout: default -nav_order: 2 -has_children: true ---- +## Add a Game to Realms.World -# Realms.World Data - -## Add a Game +![Game Preview](/games.png) To add a game to the frontend - make a fork of [Realms.World Github](https://github.com/BibliothecaDAO/realmsworld) and then: +### Steps + 1. In `packages/constants/src/Games.ts` add a new object to the end of the `const games: Game[]`. You can find values for the Collection, Chain and Token typescript enums in the relevant files in the same directory. 2. Create folder `apps/nextjs/public/games/{game.id}` (using the id entered in the previous step) with the following structure: @@ -29,5 +24,3 @@ To add a game to the frontend - make a fork of [Realms.World Github](https://git ``` 3. Submit a PR to the main branch of the repo - -![Game Preview](/assets/images/games.png) diff --git a/documentation/docs/pages/getting-started.md b/documentation/docs/pages/getting-started.md new file mode 100644 index 00000000..e6c3a745 --- /dev/null +++ b/documentation/docs/pages/getting-started.md @@ -0,0 +1,43 @@ +# Realms.World - The portal to the Realms Autonomous World + +## Overview + +[Realms.World](https://realms.world) serves as the central hub for accessing the Realms Autonomous World. This platform offers a comprehensive marketplace dedicated to the Loot and Realms ecosystem on both Ethereum and Starknet. + +[Realms.World](https://realms.world) encompasses essential ecosystem functionalities like bridging, staking, and NFT minting. Additionally, you'll find valuable insights about the various games within the World. + +The tech stack + +- Nextjs +- Drizzle +- Apibara +- TRPC +- Graphql +- Vercel + +## Packages + +The Realms.World platform consists of a few key packages: + +- [Frontend Client](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/apps/nextjs): The Next.js Frontend + +- [Subgraph](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/packages/subgraph): The L1 Starknet Messaging Indexer for Bridge Transactions +- [Starknet Indexer](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/packages/apibara): The L2 indexer for Bridge and NFT Transactions + Metadata +- [TRPC](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/packages/api): The TRPC router used by the frontend to communicate with the database +- [Graphql](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/packages/graphql-server): A GraphQL endpoint for the L2 Indexed data (currently used by Loot Survivor) +- [Drizzle DB](https://github.com/BibliothecaDAO/RealmsWorld/tree/main/packages/db): The Drizzle ORM containing schema for the Postgres Database (currently set up for the Neon.tech serverless database - but could be adapted to a local or Planetscale without too much trouble) + +## Contributing + +We greatly value contributions from the community to enhance the Realms.World experience. To get involved, follow these steps: + +1. Fork the repository. +2. Create a new branch for your changes. +3. Implement your changes and commit them to your branch. +4. Submit a pull request that includes a detailed description of your modifications. + +Our team will review your contribution and offer feedback. Once approved, your changes will be merged into the main branch. + +## License + +Realms.World is an open-source project released under the MIT License. This license grants you the freedom to use, modify, and distribute the code, provided you retain the original copyright and permission notice in all copies or substantial portions of the software. diff --git a/documentation/docs/pages/index.mdx b/documentation/docs/pages/index.mdx new file mode 100644 index 00000000..4190f7fd --- /dev/null +++ b/documentation/docs/pages/index.mdx @@ -0,0 +1,28 @@ +--- +layout: landing +--- + +import { HomePage } from "vocs/components"; + +import { Footer } from "../components/Footer"; + + + + Realms.World Developer Docs + {/* */} + + This is documentation for Realms.World Client + + + + Get started + + + GitHub + + + + +::sponsors + +