# Getting Started

If you are reading this you've probably successfully installed Chariot.js and now look into how to get started with development. This page will guide you through the setup process, project structure, and hopefully will clarify some questions you may have.

# 📂 Project Structure

As Chariot.js strives to be as unopinionated as possible, a project may be structured however it's necessary. More abstractions? Less abstractions? Folders separating different files? However you like. Chariot.js is built in a way it'll automagically find everything you've provided no matter how your project is structured. Whether you have all your files in the same directory, or like to nest different files for different categories within multiple nested folders, Chariot.js will properly find and register everything without even needing to provide a file path! You dictate in which direction it's going and Chariot.js will adapt!

A project structure may look as simple as this

Project/
├── index.js
├── Ping.js
└── Ready.js

or as sophisticated as this

Project/
├── commands/
│   ├── admin/
│   │   └── Eval.js
│   └── games/
│       ├── gambling/
│       │   ├── Roulette.js
│       │   └── SlotMachine.js
│       └── cards/
│           └── Uno.js
│
├── events/
│   ├── ready/
│   │   └── ReadyCheck.js
│   └── guildCreate/
│       ├── RegisterGuild.js
│       └── CheckIfBlacklisted.js
│
└── index.js

# 💿 Loading Commands & Events

As written before, Chariot.js is capable of loading command and event module files automagically without providing any sort of file path. This development convenience requires the developer to extend their command and event module classes with the corresponding base classes. Commands need to extend the Command class, Event Modules need to extend the Event class.

That's it! Chariot.js will handle the rest and register any commands and event modules automagically.

# ❔ What's Next?

If a more practical example of a working bot is desired, checking out the fully featured project example might be worth a shot. Other than that, there's many command and event module examples waiting in the examples category to be discovered.