# Core en ext

Het framework en je applicatie: twee repositories, eerst in ext gezocht.

Een Nimbly-project combineert twee Git-repositories in één mappenstructuur: het framework, en je applicatie daarin.

```text
my-project/          framework repository (core)
  core/              routes, templates, libraries and modules of the framework
  css/  js/          sources of the default asset build
  ext/               your application, a repository of its own
    data/            resources and records
    lib/             PHP libraries
    modules/         packaged features
    tpl/             reusable templates
    uri/             routes
    static/          built assets and static files
    theme.css        your styles
```

| Repository | Bevat | Eigendom van |
|---|---|---|
| Framework | `core/` en de gedeelde build-opzet | Open source, ISC-licentie |
| Applicatie | `ext/` | Jou, onder de licentie die je kiest |

De repositories hebben elk hun eigen geschiedenis, branches en remotes. `git status` in de hoofdmap van het project toont wijzigingen aan het framework; `git -C ext status` toont de jouwe.

## Eerst ext, dan core

Elke template, library, route, module en elk statisch bestand wordt eerst in `ext/` gezocht, daarna in `core/`. Dat geeft je drie manieren om met het framework te werken:

- **Toevoegen.** Een nieuw bestand in `ext/` staat naast het framework: een route, een template, een library, een veldtype.
- **Vervangen.** Een bestand in `ext/` met hetzelfde pad als een bestand in `core/` wordt in plaats daarvan gebruikt. Vervang één template van de pagina-shell, één adminscherm of één statisch bestand, en houd de rest.
- **Laten staan.** Wat je project niet vervangt, komt uit core en wordt beter met elke update.

Bijvoorbeeld:

| Bestand in ext | Effect |
|---|---|
| `ext/tpl/html/stylesheets.tpl` | Je eigen stylesheets in elke pagina-shell |
| `ext/static/favicon.svg` | Je eigen icoon in plaats van het standaardicoon |
| `ext/uri/health/index.tpl` | Je eigen antwoord op de health check |
| `ext/agents/nimbly/project.md` | Context over de site voor de ingebouwde agent, die zijn core-definitie houdt |

Core zelf wordt nooit aangepast voor één project. Een wijziging die elke Nimbly-applicatie nodig heeft, hoort in het framework; een wijziging voor één applicatie hoort in `ext/`.

## Updates

Een project draait de actuele core: er zijn geen frameworkversies om vast te zetten, de commit is de versie. Pull core om bij te werken; je `ext/` blijft onaangeroerd. Een core-update herschrijft nooit gegenereerde bestanden zoals `.htaccess`, dus `./nimbly system:repair` meldt waar een oudere site afwijkt van een nieuwe installatie, en past de wijzigingen toe met `--yes`. Zie [Updates](/nl/docs/operate/updates/).

## Verder lezen

- [Levensloop van een request](/nl/docs/concepts/request-lifecycle/): hoe een request zijn route vindt.
- [Je eigen HTML](/nl/docs/guides/html-shell/): de pagina-shell deels of helemaal vervangen.
- [Modules](/nl/docs/concepts/modules/): een feature verpakken binnen `ext/`.
