structure.md 1.24 KB
Newer Older
les's avatar
les committed
1
2
3
4
5
6
7
---
layout: default
title: Project Structure
permalink: /dev/structure
parent: Hacking
---

les's avatar
les committed
8
9
10
11
### Project structure
{: .no_toc }
1. TOC
{:toc}
les's avatar
les committed
12
13
14
15


### API / backend

les's avatar
les committed
16
Source code inside `server/api/`.  
les's avatar
les committed
17
18
19
20
21
`index.js` is basically a routing table pointing each PATH with specified
HTTP VERB to a method of a controller.

jwt is used to authenticate api request.

les's avatar
les committed
22
[Express.js](https://expressjs.com/) is based on middleware, passing each request to a chain of methods.
les's avatar
les committed
23
24

If you come from a PHP background, note that the main difference with
les's avatar
les committed
25
[Node.js](https://en.wikipedia.org/wiki/Node.js) is that the server process is always running and able to manage
les's avatar
les committed
26
27
28
multiple requests and tasks together (asyncronically) while each php
process is tied to a single request.

les's avatar
les committed
29
[Sequelize](https://sequelize.org/) is used as ORM. Take a look in [`/server/api/models`](https://git.lattuga.net/cisti/gancio/src/master/server/api/models).
les's avatar
les committed
30
31
32
33
34
35
36
37
38


### Client / frontend
Nuxt.js is used here!  
Nuxt is basically Vue plus SSR (Server Side Rendering).
Client routing in nuxt is automatic (if you don't need something special),
just put your page inside `pages` and that's it!  


les's avatar
les committed
39
40
### Federation / ActivityPub
Code inside [`server/federation`](https://git.lattuga.net/cisti/gancio/src/master/server/federation).