Skip to content

Project structure

Lukas Celius edited this page Apr 23, 2026 · 2 revisions

The project has a project structure with layered packages, where each package has a clear responsibility. This is done to make the program easier to maintain understand, and extend.

The project is split into the following package structure:

src/
├── main/
│   ├── java/
│   │   ├── app/
│   │   ├── application/
│   │   │   ├── security/
│   │   │   └── user/
│   │   ├── domain/
│   │   │   ├── donation/
│   │   │   ├── organization/
│   │   │   └── user/
│   │   ├── integration/
│   │   │   └── security/
│   │   ├── persistence/
│   │   │   ├── dao/
│   │   │   └── db/
│   │   └── ui/
│   │       ├── controller/
│   │       │   ├── auth/
│   │       │   ├── donation/
│   │       │   ├── organization/
│   │       │   └── profile/
│   │       └── util/
│   └── resources/
│       ├── css/
│       └── view/
│           ├── auth/
│           ├── donationView/
│           ├── organizationView/
│           └── profileView/
└── test/
    └── java/
        ├── application/
        │   └── user/
        ├── domain/
        └── integration/
            └── security/


Explanation of packages:

**app** - contains main, where database and Innsammlingskontrollen is initialized. There is also added testdata to main.

**application** - contains packages: security and user. This package handles everything related to a user-login, register statistics and security.

**domain** - this package contains the main model of the project. This contains donation, organization and user logic, which defines what each object is.

**integration** - contains external systems/files that are integrated. This contains the passwordhasher class which uses the imported SHA-256 algorithm, and InnsamlingskontrollClient, which is a external API/JSon file that contains verified organization.

**persistence** - contains everything java-based database communication like database creator class and all Dao (Data Access Object) classes, which uses java code to communicate with a SQL syntax database.

**ui** - contains classes that are responsible for running and creating the front end.

**util** - contains SessionManager, which manages the current user session.

**resources** - contains schema.sql which is a file that has sql-code that creates the tables in the database. Also contains fmxl and css files that help design the front end.
Clone this wiki locally