diff --git a/guide-en/README.md b/guide-en/README.md
index 77649dcd5..d55205d57 100644
--- a/guide-en/README.md
+++ b/guide-en/README.md
@@ -1,7 +1,115 @@
# Introduction
-Welcome to the Sern's official guide. This guide will teach you how to use the Sern.
+Welcome to the sern's official guide. This guide will go through all the core features of the framework.
+Thank you for choosing sern to be your framework!
+
+**Disclaimers**:
+- Teaching the discord.js library and / or Javascript / Typescript is out of scope of this project, so the documentation assumes you already know these elements.
+- Sern is only available in ```discord.js@dev``` at the moment. There are plans to roll out a version of Sern in ```discord.js@13.xx.xx``` in the future.
## You will learn
-* How to use the Sern with the [Sern CLI](https://github.com/sern-handler/cli)
-(TODO)
+* sern's goal
+* How to use Sern with the [CLI](https://github.com/sern-handler/cli)
+* Your first command
+* The Context class
+* Plugins
+ - Command Plugins
+ - Event Plugins
+* The SernEmitter class
+* Your sern.config.json
+* Your first event
+* Setting up event listeners
+
+---
+
+# Goal
+
+sern strives to be minimalist, but with all batteries included. Meaning, this framework provides the necessary tools
+to start up a bot in minutes, and leaves plenty room space to customize your experience and create an amazing project.
+It should include all the tools for any bot at any scale.
+
+
+# CLI
+
+Setting up the [CLI](https://github.com/sern-handler/cli) is easy.
+- To start a brand new project, run :
+```
+sern init (-y)
+```
+Include the `-y` flag if you want to set up defaults. The default langauge is [Typescript](https://www.typescriptlang.org/)
+
+- To install [plugins](todo) maintained by the community [repository](https://github.com/sern-handler/awesome-plugins),
+```
+sern plugins
+```
+This will display a menu selection of all installable plugins.
+**Note**: You must have a [sern.config.json](todo) to use this command.
+If you want to view plugins, visit the repository linked above.
+
+- To install extra utilities into your project
+```
+sern extra
+```
+
+# First Command
+We will dissect a basic command.
+If you installed a new project via the cli, This is the `ping` command located in src/commands folder.
+
+Typescript
+```typescript
+import { commandModule, CommandType } from '@sern/handler';
+
+export default commandModule({
+ type: CommandType.Both,
+ plugins: [],
+ description: 'A ping command',
+ //alias : [],
+ execute: async (ctx, args) => {
+ await ctx.reply({ content: 'Pong 🏓' });
+ },
+});
+```
+Javascript
+```javascript
+const { CommandType, commandModule } = require('@sern/handler');
+
+exports.default = commandModule({
+ type: CommandType.Both,
+ plugins: [],
+ description: 'A ping command',
+ //alias : [],
+ execute: async (ctx, args) => {
+ await ctx.reply('Pong 🏓');
+ },
+})
+```
+### Essential properties of a command
+
+- **module.type** (Required)
+ - The type of your module. For example, a command listening to messages would have the type CommandType.Text
+- **module.execute** (Required)
+ - This function is called when the command is triggered. Do your logic here!
+- **module.name** (Optional)
+ - Give your command a name. **(defaults to its filename)**
+- **module.description** (Optional)
+ - Give your command a description. **(defaults to `..`)**
+- **module.plugins** (Optional)
+ - A list of [plugins](todo) that will modify and change the behavior of your command.
+
+### Types of command modules
+Every command module `type` is part of an enum. This field allows type inference for the rest of a module's fields.
+All available command types :
+```
+CommandType.Text = A Text Command
+CommandType.Slash = A Slash Command
+CommandType.Both = A Command supporting either / or text or slash
+CommandType.
+
+```
+### How are modules fully typed?
+Discriminated unions in Typescript are a fundamental idea. In short, giving objects a property
+that differentiates itself from the rest of the union allows typescript to infer the rest of
+the properties in the object. This concept is useful when we wanted to add correct typings for all
+interaction types, messages, and event modules.
+
+