Aton is an opensource, if you want to contribute to Aton development you can do it in a number of ways.
You can always help Aton to grow by sharing it to people who could use it.
Have you thought about sending images? Sharing your screen to the users? You can help sharing us functionalities that would make Aton greater! Just create a issue.
To translate Aton to your native language, you can visit Aton Transifex project and translate application Strings.
To help programming in Aton, you can help designing and proramming HTML
+ CSS
+ Javascript
|Angular2
|Typescript
frontend or programming Scala
backend. You can look for bitesize issues to get a good start point. You can find more information on the Aton Wiki.
You can also use Vagrant for running the application.
When creating a pull request, please follow this simple format to keep the project mantainable and clean.
**Simple commit/pull request comment**
**[Issue #](Link to issue, if any)**
1. Why this change is necessary?
**Explain why is it necessary to pull this request, it should be resolving an given issue**
2. How does it address the issue?
**Explain briefly what are the changes**
3. What side effects does this change have?
**Is it a big change or a small change?. Do you think it brokes some other part of the project?**
Aton has the following code structure:
.
├── app
│ ├── config
│ ├── controllers
│ │ ├── admin
│ │ └── api
│ ├── dao
│ │ └── impl
│ ├── model
│ │ ├── form
│ │ │ └── data
│ │ ├── json
│ │ └── table
│ ├── services
│ │ ├── exec
│ │ └── impl
│ └── views
├── app-2.11
├── build.sbt
├── conf
│ ├── application.conf
│ ├── default
│ │ └── create.sql
│ ├── logback.xml
│ ├── messages.en
│ ├── messages.es
│ ├── plugins.sbt
│ ├── production.conf
│ └── routes
├── CONTRIBUTING.md
├── LICENSE
├── public
│ ├── images
│ │ ├── favicon.ico
│ │ └── favicon.png
│ ├── javascripts
│ │ ├── general.js
│ │ └── hello.js
│ └── stylesheets
│ ├── global.css
│ ├── login.css
│ └── main.css
├── README.md
├── test
└── test-2.11
App folder has all Scala code: controllers, services, daos, pojos. Everything contained here is written in Scala (Or Twirl's .scala.html
).
Contains all the application controllers. They receive requests from the client and create responses for them. It has two packages: admin
and api
.
-
api
package contains controllers that are able to receive Json requests and create Json responses. -
admin
package contains controllers that need anadmin
user role to be accessed.
DAO stands for Data Access Object, they are used to control flow between the application and the database. All tables has its own DAO and they include CRUD methods (Create, Read, Update, Delete) these DAOs are not ment to have "business logic", so anything beside database actions should be placed on the services
package.
All DAOs have an interface in dao
and an implementation in dao.impl
.
This package contains all the POJOs (Plain Old Java Object) that will encapsulate only information. This classes should be very simple.
model
contains a form
package for information that is received from client forms and should not be all the POJO (For example, computer registration does not need all the computer
fields, like state
). It also contains a json
package for json
conversions and a table
package for a Slick "mapping".
This package contains some "business logic"_ classes. Some of them are placed between controllers
and daos
for performing extra tasks. As dao
package, every service class has an interface in services
and an implementation in services.impl
.
There is also a services.exec.SSHFunction
that contains all SSH commands as Strings.
This package contains all the views with Twirl format. These files are with .scala.html
, but they are like Scala injected HTML, so here you can find HTML with a few Scala codes. Scala code are usually written with @/* all scala code */
or @{/* all scala code */}
.
This is a very important file. Here will be placed all dependencies and build instructions.
This folder contains Play Framework and Slick specific configurations.
Play Framework and Slick key: value
configurations.
MySQL script that need to be run before the first Aton execution. It creates all the tables, fields, conections and a aton
user.
Running log configurations.
Contain key resources with specific language translations. These translations are given to the user based on their browser languages.
Production configurations. Play key can be changed here.
Contains all the URL routes of the application and what controller will respond them.
This file.
Includes all files that can be accessed without an explicit controller. For example javascript/general.js
can be accessed with /javascript/general.js
.
These files are javascript
files, stylesheets
CSS and images
.