diff --git a/src/MarcSync/Objects/Entry.lua b/src/MarcSync/Objects/Entry.lua
index 3756ee7..d28907e 100644
--- a/src/MarcSync/Objects/Entry.lua
+++ b/src/MarcSync/Objects/Entry.lua
@@ -6,20 +6,20 @@ local types = {
local Entry = {}
-Entry.getValue = function(self:typeof(Entry), value:string):any
- if not value then return nil end
- return self._entryData[value]
+Entry.getValue = function(self:typeof(Entry), key:string):any
+ if not key then return nil end
+ return self._entryData[key]
end
Entry.getValues = function(self:typeof(Entry)):typeof(types.EntryData)
return self._entryData
end
-Entry.updateValues = function(self:typeof(Entry), values:typeof(types.EntryData)):number
- local result = Utils.makeHTTPRequest("entry", "PUT", "https://api.marcsync.dev/v0/entries/"..self._tableId, {["filters"]={["_id"]=self._objectId},["data"]=values}, self._accessToken);
+Entry.updateValues = function(self:typeof(Entry), data:typeof(types.EntryData)):number
+ local result = Utils.makeHTTPRequest("entry", "PUT", "https://api.marcsync.dev/v0/entries/"..self._tableId, {["filters"]={["_id"]=self._objectId},["data"]=data}, self._accessToken);
if result["success"] and result["modifiedEntries"] and result["modifiedEntries"] > 0 then
- for i,v in pairs(values) do
+ for i,v in pairs(data) do
self._entryData[i] = v
end
elseif not result["success"] then
diff --git a/website/docs-marcsync-dev/docs/classes/Collection.mdx b/website/docs-marcsync-dev/docs/classes/Collection.mdx
new file mode 100644
index 0000000..83354a0
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/classes/Collection.mdx
@@ -0,0 +1,76 @@
+# Collection
+
+Collection is a class that represents a collection in the MarcSync API.
+
+
+
+## METHODS
+
+### :createEntry(`data:` [EntryData](../types/EntryData))
+Creates a new entry in the collection and returns it as an [Entry](./Entry) object.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+[InvalidEntryData](../errors/Entry#InvalidEntryData) - Thrown when the [EntryData](../types/EntryData) is invalid.
+
+:::
+
+### :updateEntries(`filters:` [EntryData](../types/EntryData), `data:` [EntryData](../types/EntryData))
+Updates all entries that match the specified filters with the specified data.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+[InvalidEntryData](../errors/Entry#InvalidEntryData) - Thrown when the [EntryData](../types/EntryData) is invalid.
+
+:::
+
+### :getEntries(`filters:` [EntryData](../types/EntryData))
+Returns all entries that match the specified filters as an array of [Entry](./Entry) objects.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+[InvalidEntryData](../errors/Entry#InvalidEntryData) - Thrown when the [EntryData](../types/EntryData) is invalid.
+
+:::
+
+### :deleteEntries(`filters:` [EntryData](../types/EntryData))
+Deletes all entries that match the specified filters.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+[InvalidEntryData](../errors/Entry#InvalidEntryData) - Thrown when the [EntryData](../types/EntryData) is invalid.
+
+:::
+
+### :drop()
+Deletes the collection.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+
+:::
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/classes/Entry.mdx b/website/docs-marcsync-dev/docs/classes/Entry.mdx
new file mode 100644
index 0000000..537da10
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/classes/Entry.mdx
@@ -0,0 +1,49 @@
+# Entry
+
+Entry is a class that represents an entry in the MarcSync API.
+
+
+
+## METHODS
+
+### :getValues()
+Returns all values of the entry as [EntryData](../types/EntryData).
+
+
+### :getValue(`key:` [string](https://www.lua.org/pil/2.4.html))
+Returns the value of the specified key.
+
+### :updateValues(`data:` [EntryData](../types/EntryData))
+Updates the values of the entry with the specified data.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+[InvalidEntryData](../errors/Entry#InvalidEntryData) - Thrown when the [EntryData](../types/EntryData) is invalid.
+
+:::
+
+### :delete()
+Deletes the entry.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+
+:::
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/classes/MarcSyncClient.mdx b/website/docs-marcsync-dev/docs/classes/MarcSyncClient.mdx
new file mode 100644
index 0000000..1a856e1
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/classes/MarcSyncClient.mdx
@@ -0,0 +1,52 @@
+# MarcSyncClient
+
+A class that represents a MarcSync client.
+
+
+
+## METHODS
+
+### :getVersion(`clientId:` [number?](https://www.lua.org/pil/2.3.html))
+Returns the version of the client. If there is no `clientId` specified, it will return the version of the client that is currently running. If there is a `clientId` specified, it will return the version of the client that is running on the specified `clientId`.
+
+| clientId | Corresponding Client |
+|----------|----------|
+| 1 | Roblox Client |
+| 2 | NodeJS Client |
+
+### :fetchCollection(`collectionName:` [string](https://www.lua.org/pil/2.4.html))
+Fetches a collection from the MarcSync API and returns it as a [Collection](./Collection) object.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionNotFound](../errors/Collection#CollectionNotFound) - Thrown when the collection does not exist.
+
+:::
+
+### :getCollection(`collectionName:` [string](https://www.lua.org/pil/2.4.html))
+Returns a collection from the MarcSync API as a [Collection](./Collection) object. If the collection does not exist, you will get an exception upon trying to use the object.
+
+### :createCollection(`collectionName:` [string](https://www.lua.org/pil/2.4.html))
+Creates a new collection in the MarcSync API and returns it as a [Collection](./Collection) object. If the collection already exists, you will get an exception.
+
+:::caution Exceptions
+
+[InvalidAccessToken](../errors/Authorization#InvalidAccessToken) - Thrown when the `accessToken` is invalid.
+[CollectionAlreadyExists](../errors/Collection#CollectionAlreadyExists) - Thrown when the collection already exists.
+
+:::
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/classes/_category_.json b/website/docs-marcsync-dev/docs/classes/_category_.json
new file mode 100644
index 0000000..1f9afe0
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/classes/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "MarcSync Classes",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "A list of all classes in the MarcSync library."
+ }
+}
diff --git a/website/docs-marcsync-dev/docs/errors/Authorization.md b/website/docs-marcsync-dev/docs/errors/Authorization.md
new file mode 100644
index 0000000..bf9501b
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/errors/Authorization.md
@@ -0,0 +1,19 @@
+# Authorization
+
+A class that represents authorization exceptions.
+
+:::info Note
+
+This class is not meant to be used directly. It is used in the [MarcSyncClient](../classes/MarcSyncClient) class.
+
+:::
+
+:::caution Exceptions
+
+Exceptions are cachable, meaning that you can use a `pcall` to catch them.
+
+:::
+
+## InvalidAccessToken
+
+Thrown when the `accessToken` used to create the [MarcSyncClient](../classes/MarcSyncClient) is invalid.
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/errors/Collection.md b/website/docs-marcsync-dev/docs/errors/Collection.md
new file mode 100644
index 0000000..67a5f30
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/errors/Collection.md
@@ -0,0 +1,23 @@
+# Collection
+
+A class that represents collection exceptions.
+
+:::info Note
+
+This class is not meant to be used directly. It is used in the [MarcSyncClient](../classes/MarcSyncClient) class.
+
+:::
+
+:::caution Exceptions
+
+Exceptions are cachable, meaning that you can use a `pcall` to catch them.
+
+:::
+
+## CollectionNotFound
+
+Thrown when the `collectionName` does not exist.
+
+## CollectionAlreadyExists
+
+Thrown when the `collectionName` already exists.
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/errors/Entry.md b/website/docs-marcsync-dev/docs/errors/Entry.md
new file mode 100644
index 0000000..df5a24b
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/errors/Entry.md
@@ -0,0 +1,19 @@
+# Entry
+
+A class that represents entry exceptions.
+
+:::info Note
+
+This class is not meant to be used directly. It is used in the [MarcSyncClient](../classes/MarcSyncClient) class.
+
+:::
+
+:::caution Exceptions
+
+Exceptions are cachable, meaning that you can use a `pcall` to catch them.
+
+:::
+
+## InvalidEntryData
+
+Thrown when the [EntryData](../types/EntryData) is invalid.
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/errors/_category_.json b/website/docs-marcsync-dev/docs/errors/_category_.json
new file mode 100644
index 0000000..0ae6019
--- /dev/null
+++ b/website/docs-marcsync-dev/docs/errors/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "MarcSync Exceptions",
+ "position": 4,
+ "link": {
+ "type": "generated-index",
+ "description": "A list of all Exception Classes in the MarcSync library."
+ }
+}
diff --git a/website/docs-marcsync-dev/docs/intro.md b/website/docs-marcsync-dev/docs/intro.md
index 8a2e69d..1323e98 100644
--- a/website/docs-marcsync-dev/docs/intro.md
+++ b/website/docs-marcsync-dev/docs/intro.md
@@ -2,46 +2,177 @@
sidebar_position: 1
---
-# Tutorial Intro
+# Getting Started
-Let's discover **Docusaurus in less than 5 minutes**.
-
-## Getting Started
-
-Get started by **creating a new site**.
-
-Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
+Let's install **MarcSync in less than 5 minutes**.
### What you'll need
-- [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
- - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
+- [MarcSync Management Account](https://manage.marcsync.api.marcthedev.it)
+ - Click the "Login with Discord" button and login with your Discord account.
+- [Roblox Studio](https://create.roblox.com/landing) (Windows or Mac):
+- [MarcSync Client](https://github.com/MarciiTheDev/marcsync-rbx-client/releases/tag/v1.0.0) Version 1.0.X
-## Generate a new site
+## Installing the Client
-Generate a new Docusaurus site using the **classic template**.
+### 1. Open Roblox Studio
-The classic template will automatically be added to your project after you run the command:
+- Open Roblox Studio and create a new place or open an existing one in which you want to use MarcSync in.
-```bash
-npm init docusaurus@latest my-website classic
+### 2. Put in the Client
+
+:::danger Danger
+
+Please only use MarcSync in **ONLY SERVER-READABLE PLACES**. This means that you should only use MarcSync in places that are not accessible by players. If you use MarcSync in a place that is accessible by players, they can easily get your token and modify data in your place. If you think your token has been compromised, please generate a new one in the [MarcSync Management Account](https://manage.marcsync.api.marcthedev.it).
+
+:::
+
+- Drag and drop the downloaded MarcSync Client into the Explorer window in Roblox Studio.
+ - If you don't see the Explorer window, click the "View" tab and check the "Explorer" box.
+ - You should now see a folder called "MarcSync" in the Explorer window.
+- Grab the "MarcSync" folder and drag it into the "ServerScriptService" folder.
+ - If you don't see the "ServerScriptService" folder, click the "View" tab and check the "Explorer" box.
+ - You should now see a folder called "MarcSync" in the "ServerScriptService" folder.
+
+### 3. Configure the Client
+
+:::caution Warning
+
+Please make sure to **not** share your token with anyone. This token is used to authenticate your place with the MarcSync API and can be used to modify your place. If you think your token has been compromised, please generate a new one in the [MarcSync Management Account](https://manage.marcsync.api.marcthedev.it).
+
+:::
+
+- Open the "MarcSync" folder in the "ServerScriptService" folder.
+- Open the MarcSyncv1.0 file in the "MarcSync" folder and search for the following lines:
+
+```lua
+local tokens = {
+ ["exampleToken"] = "AAAAAAAAAA.BBBBBBBBBB.CCCCCCCCCC"
+}
```
-You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
+- Replace the `AAAAAAAAAA.BBBBBBBBBB.CCCCCCCCCC` with your token from the [MarcSync Management Account](https://manage.marcsync.api.marcthedev.it) and save the file.
+- Replace the `exampleToken` with a name for your token. This can be anything you want, but it's recommended to use something that describes the place you're using MarcSync in.
-The command also installs all necessary dependencies you need to run Docusaurus.
+## Implementing MarcSync
-## Start your site
+:::info Note
-Run the development server:
+Please make sure to enable HTTP requests in your game settings. You can do this by going to the "Game Settings" tab in Roblox Studio and checking the "Allow HTTP Requests" box. This is required for MarcSync to work.
-```bash
-cd my-website
-npm run start
+:::
+
+:::danger Danger
+
+Please only use MarcSync in **ONLY SERVER-READABLE PLACES**. This means that you should only use MarcSync in places that are not accessible by players. If you use MarcSync in a place that is accessible by players, they can easily get your token and modify data in your place. If you think your token has been compromised, please generate a new one in the [MarcSync Management Account](https://manage.marcsync.api.marcthedev.it).
+
+:::
+
+### 1. Require MarcSync
+
+First, we need to require MarcSync in our script. We can do this by adding the following line to the top of our script:
+
+```lua
+// highlight-start
+local MarcSync = require(game:GetService("ServerScriptService"):WaitForChild("MarcSync")["MarcSyncv1.0"])
+// highlight-end
```
-The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
+### 2. Create a new MarcSync instance
-The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
+Next, we need to create a new MarcSync instance. We can do this by adding the following line to our script:
-Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
+```lua
+local MarcSync = require(game:GetService("ServerScriptService"):WaitForChild("MarcSync")["MarcSyncv1.0"])
+// highlight-start
+local ms = MarcSync.new("exampleToken")
+// highlight-end
+```
+
+:::info Note
+
+Make sure to replace `exampleToken` with the name of your token, like we did in the [Configure the Client](#3-configure-the-client) step.
+
+:::
+
+Great! We now have a new MarcSync instance. This instance will be used to communicate with the MarcSync API.
+
+## Example Usage
+
+Here is an example of how you can use MarcSync to store a player's playtime in a MarcSync Database.
+
+```lua
+local MarcSync = require(game:GetService("ServerScriptService"):WaitForChild("MarcSync")["MarcSyncv1.0"])
+local ms = MarcSync.new("exampleToken")
+
+local activityCollection = ms:getCollection("activities")
+
+local activities = {}
+
+game:GetService("Players").PlayerAdded:Connect(function(plr)
+
+ local activity = activityCollection:getEntries({
+ ["userId"] = plr.UserId
+ })[1]
+
+ if not activity then
+ activity = activityCollection:createEntry({
+ ["userId"] = plr.UserId,
+ ["playTime"] = 0
+ })
+ end
+
+ -- Not required, but just for a visual example
+
+ local leaderstats = Instance.new("Folder")
+ leaderstats.Name = "leaderstats"
+ leaderstats.Parent = plr
+
+ local playTime = Instance.new("IntValue")
+ playTime.Name = "PlayTime"
+ playTime.Parent = leaderstats
+ playTime.Value = activity:getValue("playTime")
+
+ -- [[ End of visual example ]]
+
+ activities[plr.UserId] = {
+ ["activity"] = activity,
+ ["joinedAt"] = os.time()
+ }
+
+end)
+
+game:GetService("Players").PlayerRemoving:Connect(function(plr)
+
+ activities[plr.UserId].activity:updateValues({
+ ["playTime"] = activities[plr.UserId].activity:getValue("playTime") + (os.time() - activities[plr.UserId].joinedAt)
+ })
+
+end)
+
+-- Not required, but just for a visual example
+
+coroutine.wrap(function()
+ while true do
+ task.wait(1)
+ for i,_ in pairs(activities) do
+ game.Players:GetPlayerByUserId(i).leaderstats.PlayTime.Value += 1
+ end
+ end
+end)()
+
+-- [[ End of visual example ]]
+
+```
+
+:::info Note
+
+Please make sure to, if you test out try out that example, to replace `exampleToken` with the name of your token, like we did in the [Configure the Client](#3-configure-the-client) step. As well as either creating the `activities` collection via `ms:createCollection("activities")` or replacing `activities` with an already existing collection.
+
+:::
+
+:::info Note
+
+This is just an example of how you can use MarcSync. You can use MarcSync however you want, as long as you follow the [Terms of Service](https://manage.marcsync.api.marcthedev.it/tos.html).
+
+:::
\ No newline at end of file
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/_category_.json b/website/docs-marcsync-dev/docs/tutorial-basics/_category_.json
deleted file mode 100644
index 2e6db55..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/_category_.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "label": "Tutorial - Basics",
- "position": 2,
- "link": {
- "type": "generated-index",
- "description": "5 minutes to learn the most important Docusaurus concepts."
- }
-}
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/congratulations.md b/website/docs-marcsync-dev/docs/tutorial-basics/congratulations.md
deleted file mode 100644
index 04771a0..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/congratulations.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-sidebar_position: 6
----
-
-# Congratulations!
-
-You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
-
-Docusaurus has **much more to offer**!
-
-Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
-
-Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
-
-## What's next?
-
-- Read the [official documentation](https://docusaurus.io/)
-- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
-- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
-- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
-- Add a [search bar](https://docusaurus.io/docs/search)
-- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
-- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/create-a-blog-post.md b/website/docs-marcsync-dev/docs/tutorial-basics/create-a-blog-post.md
deleted file mode 100644
index ea472bb..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/create-a-blog-post.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-sidebar_position: 3
----
-
-# Create a Blog Post
-
-Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
-
-## Create your first Post
-
-Create a file at `blog/2021-02-28-greetings.md`:
-
-```md title="blog/2021-02-28-greetings.md"
----
-slug: greetings
-title: Greetings!
-authors:
- - name: Joel Marcey
- title: Co-creator of Docusaurus 1
- url: https://github.com/JoelMarcey
- image_url: https://github.com/JoelMarcey.png
- - name: Sébastien Lorber
- title: Docusaurus maintainer
- url: https://sebastienlorber.com
- image_url: https://github.com/slorber.png
-tags: [greetings]
----
-
-Congratulations, you have made your first post!
-
-Feel free to play around and edit this post as much you like.
-```
-
-A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/create-a-document.md b/website/docs-marcsync-dev/docs/tutorial-basics/create-a-document.md
deleted file mode 100644
index ffddfa8..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/create-a-document.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-sidebar_position: 2
----
-
-# Create a Document
-
-Documents are **groups of pages** connected through:
-
-- a **sidebar**
-- **previous/next navigation**
-- **versioning**
-
-## Create your first Doc
-
-Create a Markdown file at `docs/hello.md`:
-
-```md title="docs/hello.md"
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
-
-## Configure the Sidebar
-
-Docusaurus automatically **creates a sidebar** from the `docs` folder.
-
-Add metadata to customize the sidebar label and position:
-
-```md title="docs/hello.md" {1-4}
----
-sidebar_label: 'Hi!'
-sidebar_position: 3
----
-
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-It is also possible to create your sidebar explicitly in `sidebars.js`:
-
-```js title="sidebars.js"
-module.exports = {
- tutorialSidebar: [
- 'intro',
- // highlight-next-line
- 'hello',
- {
- type: 'category',
- label: 'Tutorial',
- items: ['tutorial-basics/create-a-document'],
- },
- ],
-};
-```
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/create-a-page.md b/website/docs-marcsync-dev/docs/tutorial-basics/create-a-page.md
deleted file mode 100644
index 20e2ac3..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/create-a-page.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 1
----
-
-# Create a Page
-
-Add **Markdown or React** files to `src/pages` to create a **standalone page**:
-
-- `src/pages/index.js` → `localhost:3000/`
-- `src/pages/foo.md` → `localhost:3000/foo`
-- `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
-
-## Create your first React Page
-
-Create a file at `src/pages/my-react-page.js`:
-
-```jsx title="src/pages/my-react-page.js"
-import React from 'react';
-import Layout from '@theme/Layout';
-
-export default function MyReactPage() {
- return (
-
-
My React page
-
This is a React page
-
- );
-}
-```
-
-A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
-
-## Create your first Markdown Page
-
-Create a file at `src/pages/my-markdown-page.md`:
-
-```mdx title="src/pages/my-markdown-page.md"
-# My Markdown page
-
-This is a Markdown page
-```
-
-A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/deploy-your-site.md b/website/docs-marcsync-dev/docs/tutorial-basics/deploy-your-site.md
deleted file mode 100644
index 1c50ee0..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/deploy-your-site.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-sidebar_position: 5
----
-
-# Deploy your site
-
-Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
-
-It builds your site as simple **static HTML, JavaScript and CSS files**.
-
-## Build your site
-
-Build your site **for production**:
-
-```bash
-npm run build
-```
-
-The static files are generated in the `build` folder.
-
-## Deploy your site
-
-Test your production build locally:
-
-```bash
-npm run serve
-```
-
-The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
-
-You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
diff --git a/website/docs-marcsync-dev/docs/tutorial-basics/markdown-features.mdx b/website/docs-marcsync-dev/docs/tutorial-basics/markdown-features.mdx
deleted file mode 100644
index 0337f34..0000000
--- a/website/docs-marcsync-dev/docs/tutorial-basics/markdown-features.mdx
+++ /dev/null
@@ -1,150 +0,0 @@
----
-sidebar_position: 4
----
-
-# Markdown Features
-
-Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
-
-## Front Matter
-
-Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
-
-```text title="my-doc.md"
-// highlight-start
----
-id: my-doc-id
-title: My document title
-description: My document description
-slug: /my-custom-url
----
-// highlight-end
-
-## Markdown heading
-
-Markdown text with [links](./hello.md)
-```
-
-## Links
-
-Regular Markdown links are supported, using url paths or relative file paths.
-
-```md
-Let's see how to [Create a page](/create-a-page).
-```
-
-```md
-Let's see how to [Create a page](./create-a-page.md).
-```
-
-**Result:** Let's see how to [Create a page](./create-a-page.md).
-
-## Images
-
-Regular Markdown images are supported.
-
-You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
-
-```md
-
-```
-
-
-
-You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
-
-```md
-
-```
-
-## Code Blocks
-
-Markdown code blocks are supported with Syntax highlighting.
-
- ```jsx title="src/components/HelloDocusaurus.js"
- function HelloDocusaurus() {
- return (
-