# Task for new contributors

This task assumes that you have [installed](https://github.com/animenotifier/notify.moe#installation) notify.moe already, started the server with the `run` tool and have the code open in Visual Studio Code. It will teach you the basics by creating an entirely empty page within notify.moe.

# Step 1: Create a new page

Let's call it `foobar`. Create a new directory under `pages`, called `foobar`. Then create the following files inside it:

* foobar.go (controller)

```go
package foobar

import (
	"github.com/aerogo/aero"
)

// Get returns the contents of our amazing page.
func Get(ctx *aero.Context) string {
	return ctx.HTML("Hey it's me, foobar!")
}
```

* foobar.pixy (template)

```pixy
component FooBar
	h1 Hi!
```


* foobar.scarlet (styles)

```scarlet
.foobar
	// Will be used later!
```

`foobar.pixy` and `foobar.scarlet` are currently not used but we'll deal with that later.

## Step 2: Route your page

Your page needs to become available on the `/foobar` route. Let's add it to `pages/index.go`, inside `Configure`:

```go
l.Page("/foobar", foobar.Get)
```

Your IDE should automatically insert the needed package import upon saving the file.

## Step 3: Add sidebar button

Inside `layout/sidebar/sidebar.pixy`, add a new button inside the `Sidebar` component:

```pixy
SidebarButton("Foobar", "/foobar", "plus")
```

## Step 4: Confirm it's there!

Navigate to `beta.notify.moe` and you should see the button to access your newly made page! Yay!

## Step 5: Play around!

Feel free to play around with the code now. You can utilize pixy components by using the `components` package inside your controller:

```go
package foobar

import (
	"github.com/aerogo/aero"
	"github.com/animenotifier/notify.moe/components"
)

// Get returns the contents of our amazing page.
func Get(ctx *aero.Context) string {
	return ctx.HTML(components.FooBar())
}
```

This would now return the contents of your previously defined pixy component instead of a hard-coded string.