# Nodewood Architecture Concepts
In order to get the most out of Nodewood, there are some important architectural concepts to understand. These will help you understand how Nodewood's code is structured, and how to structure your code to work with, and not against, the framework.
- Shared Code: Since Nodewood uses JavaScript for both the server API and the client UI, this section will show you how to get the most out of sharing code between both.
- Cascading Filesystem: Learn how the
app
andwood
folder interact, and how to override files in thewood
folder. - Configuration: Learn how to store and load configuration values, and how to override said values for testing.
- Feature-based Development: Nodewood breaks up code into "feature" folders to avoid having giant folders full of unrelated files. Learn how these features work.
- Models: Models in Nodewood aren't the ORM you're used to - in fact they have no database access at all! Why, and how to use them, is explained here.
- Validators: Validating your forms and API endpoints are critical ways to increase security and user experience. Nodewood has systems in place to make it much easier to do both, with a minimal amount of code.
- Error Handling: Learn how errors are handled in Nodewood, and how to create and throw your own so that they are caught by Nodewood's global systems correctly.