arandu

command module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: MIT Imports: 3 Imported by: 0

README

Arandu

arandu-io/arandu

The Arandu application skeleton.

Build Status Go Reference Latest Version License

About the skeleton

Note: this is what a new project starts from. The framework it runs on is arandu-io/framework.

You do not clone it by hand:

aru new my-app
cd my-app && aru dev

The tree is the conventional one — app/Http/Controllers, app/Models, app/Policies, bootstrap/, config/, database/, resources/views, routes/, storage/, public/ — so nothing about where a file lives has to be learned.

Three directories carry the difference: app/Services/, app/Repositories/ and a mandatory app/Policies/. Elsewhere those are a habit an organised team keeps; here they are skeleton, and aru doctor asks for them.

It runs with git clone && aru dev. No node_modules, no package.json, no JS lockfile, and no Node installed — assets are embedded in the binary.

Learning Arandu

The API reference is generated from the doc comments and lives on pkg.go.dev. Every exported symbol carries one, and that is deliberate: it is the documentation that cannot drift from the code, because it sits in the same file.

The CLI documents itself. aru help lists every command, and each one explains what it writes and what to do with it. aru doctor explains what it found and what breaks, not which rule was violated.

A guide and a website do not exist yet, and that is a decision rather than a gap: a guide written against an API that still moves is work done twice, and the second time is worse — there is wrong documentation published. The site is the next phase, and it will be an Arandu application.

Contributing

See CONTRIBUTING.md. Before opening a pull request, the three commands at the top of that file have to pass, and CI runs exactly them.

Security Vulnerabilities

Please review our security policy on how to report a vulnerability. Never open a public issue for one.

License

Open-sourced software licensed under the MIT license.

Documentation

Overview

Command arandu is the entry point of this application.

It is both halves of what is usually two artifacts, a front controller and a console script: the binary is the server, and the same binary is the command line. There is no front controller and no document root, because in Go the process listens itself.

Almost nothing is here. The wiring is bootstrap/app.go and the commands are bootstrap/console.go, for the reason Laravel's index.php is twenty lines: `main` cannot be imported, so anything living here is anything a test cannot reach -- and the tests worth having boot the whole application.

`aru serve` runs this binary with that argument, because only this binary knows which modules exist.

Directories

Path Synopsis
app
Http/Controllers
Package controllers holds this application's controllers.
Package controllers holds this application's controllers.
Models
Package models holds this application's domain types.
Package models holds this application's domain types.
Policies
Package policies holds this application's authorization decisions.
Package policies holds this application's authorization decisions.
Providers
Package providers holds this application's own modules.
Package providers holds this application's own modules.
Package assets carries what `aru view:build` compiled, into the binary.
Package assets carries what `aru view:build` compiled, into the binary.
Package bootstrap composes the application.
Package bootstrap composes the application.
Package config is this application's configuration, one file per domain: ten files, named after what they configure.
Package config is this application's configuration, one file per domain: ten files, named after what they configure.
database
factories
Package factories builds domain objects with sensible values.
Package factories builds domain objects with sensible values.
migrations
Package migrations holds this application's own schema changes.
Package migrations holds this application's own schema changes.
seeders
Package seeders holds the database seeders of this project.
Package seeders holds the database seeders of this project.
Package public serves the files a browser or a crawler asks for by a fixed path.
Package public serves the files a browser or a crawler asks for by a fixed path.
Package routes is where this application declares what it answers.
Package routes is where this application declares what it answers.
Package tests is the base every test in this project builds on.
Package tests is the base every test in this project builds on.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL