Skip to content

Commit

Permalink
Merge pull request #188 from AthennaIO/develop
Browse files Browse the repository at this point in the history
improve the documentation
  • Loading branch information
jlenon7 authored Feb 23, 2024
2 parents e268903 + 56b4b3d commit 40b6f9d
Show file tree
Hide file tree
Showing 8 changed files with 191 additions and 7 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ body:
attributes:
value: |
## Ask for help through appropriate channels
If you feel unsure about the cause of the problem, consider asking for help on for example [StackOverflow](https://stackoverflow.com/questions/ask) or our [Discord](https://discord.gg/mZyBkA936X) before posting a bug report. The issue tracker is not a help forum.
If you feel unsure about the cause of the problem, consider asking for help on for example [StackOverflow](https://stackoverflow.com/questions/ask) or our [Discord](https://discord.gg/JdEbBAKw6X) before posting a bug report. The issue tracker is not a help forum.
- type: markdown
attributes:
value: |
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ body:
For anything else, such as questions or getting help, please see:
- [The Athenna help page](https://athenna.io/help)
- [Our `#help` channel in Discord](https://discord.gg/j6FKKQQrW9)
- [Our `#help` channel in Discord](https://discord.gg/JdEbBAKw6X)
- The [AthennaIO](https://stackoverflow.com/questions/tagged/AthennaIO) tag on [StackOverflow](https://stackoverflow.com/questions/ask)
- type: checkboxes
id: no-post
Expand Down
2 changes: 1 addition & 1 deletion .github/SUPPORT.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Please note this issue tracker is not a help forum. We recommend using [StackOverflow](https://stackoverflow.com/questions/tagged/athennaio) or [Discord channel](https://discord.gg/mZyBkA936X) for questions.
Please note this issue tracker is not a help forum. We recommend using [StackOverflow](https://stackoverflow.com/questions/tagged/athennaio) or [Discord channel](https://discord.gg/JdEbBAKw6X) for questions.

<!-- Love Athenna? Please consider supporting our collective: 👉 https://opencollective.com/athennaio/donate -->
1 change: 1 addition & 0 deletions docs/architecture-concepts/application-lifecycle.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ executed the `hello` command defined in our `.athennarc.json` file:
"commands": {
"hello": {
"path": "#app/console/commands/HelloCommand",
"env": "local",
"loadApp": false,
"stayAlive": false,
"loadAllCommands": false,
Expand Down
31 changes: 30 additions & 1 deletion docs/getting-started/athennarc-file.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -163,15 +163,44 @@ of it could be the command path or an object with the
"make:exception": "@athenna/core/commands/MakeExceptionCommand",
"make:facade": {
"path": "@athenna/core/commands/MakeFacadeCommand",
"env": "local",
"destination": "./src/providers/facades",
"loadApp": false,
"stayAlive": false,
"loadAllCommands": false,
"environments": ["console"]
}
}
}
```

Depending on the command you are running, it got their
own configurations. Commands like `make:...` for example,
reads the `destination` property to the file generated
for a different path from it default.

There are properties that you can define whatever your
command. Let's see who they are and what they do:

- **`path`** - Defines the path to your command, this field is mandatory
if you are using an object to define your command.
- **`loadApp`** - If `true`, the `Ignite.fire()` method will be called
until running your command. The `Ignite.fire()` method is responsible
to load your env file and configuration files and also boot your
service providers.
- **`env`** - Defines which env file will be used to run your command.
This field is not required and it will only be relevant when the
`loadApp` property is `true`.
- **`stayAlive`** - If `true`, your command will stay running until the
event loop is not in use anymore. Very useful for keep running
background tasks from commands.
- **`loadAllCommands`** - If `true`, all the commands inside the `commands`
property will be loaded. Useful when you command needs to call other command
programmatically.
- **`environments`** - Only relevant when `loadApp` is `true`. The environments
set will be used as parameter for `Ignite.fire()` method and will help
Athenna to select the service providers that should or shouldn't be booted.

:::tip

More information about commands could be found at
Expand Down Expand Up @@ -246,7 +275,7 @@ resolve the paths of your application:
```

The paths above are the default ones used by Athenna to resolve
your application paths. You can change one of then or many
your application paths. You can change one of them or many
if you want, your directories defined in `directories` property
will always be merged with the defaults.

Expand Down
143 changes: 143 additions & 0 deletions docs/getting-started/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,72 @@ description: How to install and set up your first Athenna project.

How to install and set up your first Athenna project.

## Meet Athenna

Athenna is a framework written specially for the Node.js runtime
with expressive and elegant syntax. The framework provides a reliable
code foundation and starting point for creating your application,
allowing you to focus on creating something amazing while we sweat the
details.

Athenna strives to provide an amazing developer experience while
providing powerful features such as thorough dependency injection,
an expressive database abstraction layer, unit and e2e testing,
and more.

Whether you are new to Node.js ecosystem or have years of experience,
Athenna is a framework that can grow with you. We'll help you take
your first steps as a developer or give you a boost as you take your
expertise to the next level. We can't wait to see what you build, make
sure to share it with us in our [Discord community](https://discord.gg/JdEbBAKw6X).

:::tip

New to Athenna? Check out the [Athenna YouTube channel](https://www.youtube.com/@athennaio)
for an infinity of hands-on videos!

:::

## Why Athenna?

There are a variety of tools and frameworks available to you when building
a software using Node.js. However, we believe Athenna is the best choice for
building modern microservices.

### A progressive framework

We like to call Athenna a "progressive" framework. By that, we mean that
Athenna grows with you. If you're just taking your first steps into backend
development, Athenna's vast library of documentation, guides, and video
tutorials will help you learn the ropes without becoming overwhelmed.

If you're a senior developer, Athenna gives you robust tools for dependency
injection, unit and e2e testing, database abstracted layer and more.
Athenna is fine-tuned for building professional applications and ready to
handle enterprise work loads.

### A scalable framework

Athenna is incredibly scalable. Thanks to the scaling-friendly nature of
Node.js and Athenna's built-in support for fast, distributed cache systems
like Redis, horizontal scaling with Athenna is a breeze. In fact, Athenna applications
have been easily scaled to handle hundreds of millions of requests per month.

### An agnostic framework

Athenna is perpect for building modern software using microservices architecture.
No matter what type of application you are creating, be it a REST API, a CLI, a Cron Job,
Athenna has a reliable solution foundation for each occasion, the only thing you will
need to take care is how your application will communicate with the external world.

### A community framework

Athenna is not reinventing the whell, the framework combines the best packages
in the Node.js ecosystem to offer the most robust and developer friendly
framework. We are always seeking for talented developers like you to
help us by [contributing to the framework](https://github.com/athennaio) and
make it even better.

## Your first Athenna project

### Prerequisites
Expand Down Expand Up @@ -81,3 +147,80 @@ file to bootstrap your application with predefined configurations.
- The `watch` flag is meant to watch the file system for
changes and restart your application automatically when
doing some change on it.

### What the 🤬 is `Path.boostrap('main.ts')`?

Well, Athenna tries a lot to be a framework without opinion, one thing
that some frameworks do that makes them to have a lot of opinion is defining
crucial file paths where you can't touch that file without breaking everything.

Athenna is not totally different from them in this aspect, as you can see,
the `node artisan serve` command depends on the existence of the `./bootstrap/main.ts`
file. To be able to be "opinion less" without losing DX (Developer Experience)
we ensure that you can easily configure this path the way you want by doing two
things:

1. In all places of our documentation you will see that we always use the [`Path`](/docs/the-basics/helpers#path)
helper to reference file paths, so your brain could detect that the directory path
you just see is configurable.
2. Inside `.athennarc.json` file or the `athenna` property of your `package.json` you
have the [`directories` property](/docs/getting-started/athennarc-file#the-directories-property)
where you can modify any path supported by the [`Path`](/docs/the-basics/helpers#path) helper.

Ok, now you might be asking yourself: what the 🤬 is `.athennarc.json`? Be patient, we
gonna see later on this documentation page 😆.

## Initial configuration

All of the configuration files for the Athenna framework are stored
in the `Path.config()` directory. Each option is documented, so feel
free to look through the files and get familiar with the options available
to you.

Athenna needs almost no additional configuration out of the box. You are
free to get started developing! However, you may wish to review the
`Path.config('app.ts')` file and its documentation. It contains several
options such as timezone and locale that you may wish to change according
to your application.

## Environment based configuration

Since many of Athenna's configuration option values may vary depending on
whether your application is running on your local machine or in production,
many important configuration values are defined using the `.env` file that
exists at the root of your application.

Your `.env` file should not be committed to your application's source control,
since each developer / server using your application could require a different
environment configuration. Furthermore, this would be a security risk in the
event an intruder gains access to your source control repository, since any
sensitive credentials would get exposed.

:::note

For more information about the `.env` file and environment based configuration,
check out the full [configuration documentation](/docs/getting-started/configuration).

:::

## Workspace and runtime configurations

Inside the root directory of your project, there is a file
called `.athennarc.json` or the `athenna` property of your
`package.json`. These configurations are used by Athenna
for configuring the workspace and certain runtime
settings of your Athenna application. Basically any configuration
related to how the framework will bootstrap and behave should be
defined in these configuration.

:::note

Always remember that if you can't find the `.athennarc.json` file
in the root path of you project, it will be defined inside of your
`package.json` in the `athenna` property.

For more information about the RC file, more details about each one
of its options and also how to define your own properties inside of it
check out the full [Athenna RC file documentation](/docs/getting-started/athennarc-file).

:::
9 changes: 8 additions & 1 deletion docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ const config = {
html: '<i class="fa-brands fa-github"></i>',
},
{
href: 'https://discord.gg/mZyBkA936X',
href: 'https://discord.gg/JdEbBAKw6X',
'aria-label': 'Discord',
className: 'navbar__icon navbar__discord',
position: 'right',
Expand All @@ -103,6 +103,13 @@ const config = {
position: 'right',
html: '<i class="fa-brands fa-x-twitter"></i>',
},
{
href: 'https://www.youtube.com/watch?v=wNMrx6OGKFk',
'aria-label': 'YouTube',
className: 'navbar__icon navbar__youtube',
position: 'right',
html: '<i class="fa-brands fa-youtube"></i>',
},
],
},
prism: {
Expand Down
8 changes: 6 additions & 2 deletions static/css/icons.css
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,15 @@
font-size: 1.24rem;
}

html[data-theme='light'] .navbar__github .navbar__discord .navbar__twitter {
.navbar__youtube {
font-size: 1.24rem;
}

html[data-theme='light'] .navbar__github .navbar__discord .navbar__twitter .navbar__youtube {
color: #000;
}

html[data-theme='dark'] .navbar__github .navbar__discord .navbar__twitter {
html[data-theme='dark'] .navbar__github .navbar__discord .navbar__twitter .navbar__youtube {
color: #fff;
}

Expand Down

0 comments on commit 40b6f9d

Please sign in to comment.