2019-03-03 15:05:35 +01:00
## Friendica\Module
The Module namespace contains the different modules of Friendica.
Each module is loaded through the [`App` ](https://github.com/friendica/friendica/blob/develop/src/App.php ).
2019-05-01 19:46:18 +02:00
There are mainly two types of modules:
- frontend modules to interact with users
- backend modules to interact with machine requests
### Frontend modules
This type of modules mainly needs a template, which are generally located at
[view/templates/ ](https://github.com/friendica/friendica/tree/develop/view/templates ).
A frontend module should extend the [`BaseModule` ](https://github.com/friendica/friendica/blob/develop/src/BaseModule.php ), especially the `content()` method.
### Backend modules
2019-05-01 19:58:51 +02:00
This type of modules mainly responds either with encoded `XML` or with `JSON` output.
It isn't intended to respond with human readable text.
2019-05-01 19:46:18 +02:00
2019-05-01 19:58:51 +02:00
A frontend module should extend the [`BaseModule` ](https://github.com/friendica/friendica/blob/develop/src/BaseModule.php ), especially the `rawContent()` method.
### Routing
Every module needs to be accessed within a route.
2019-05-01 20:17:15 +02:00
The routes are defined inside [`Router->collectRoutes()` ](https://github.com/friendica/friendica/blob/develop/src/App/Router.php ).
2019-05-01 19:58:51 +02:00
Use the given routes as a pattern for further routes.
2019-05-01 20:17:15 +02:00
The routing library and further documentation can be found [here ](https://github.com/nikic/FastRoute ).