1.
Architecture
❱
1.1.
Goals
1.2.
Constraints
1.3.
Context & Scope
1.4.
Solution Strategy
1.5.
Building Block View
1.6.
Runtime View
1.7.
Deployment
1.8.
Crosscutting Concepts
1.9.
Architecture Decisions
1.10.
Quality
1.11.
Risks and Technical Debt
1.12.
Glossary
2.
Authors
3.
PermaplanT Backend
❱
3.1.
Setup
3.2.
How to obtain access tokens?
3.3.
API documentation
3.4.
HTTP Headers
3.5.
Cronjobs
3.6.
Performance Benchmarks
3.7.
06updating_schema_patch
3.8.
Steps to add a Field to Entities
4.
Changelog
5.
CI/CD Pipeline
6.
Contributing to PermaplanT
❱
6.1.
Contributing to Backend
6.2.
Contributing to Frontend
7.
Database
❱
7.1.
Cronjobs
7.2.
Hierarchy
7.3.
Schemata
❱
7.3.1.
ER diagram
7.3.2.
Enum Types
7.3.3.
Table descriptions
8.
Decision Process
❱
8.1.
EXPLANATIONS
8.2.
TEMPLATE
8.3.
Authentication & Authorization
8.4.
Backend API documentation
8.5.
Mail Client for the Backend
8.6.
Backend ORM/SQL Crate
8.7.
Backend Programming Language
8.8.
Backend Testing Strategy
8.9.
Backend Web Framework
8.10.
CI/CD
8.11.
Database
8.12.
Database Plant Hierarchy
8.13.
Drawing Library
8.14.
Example Migrations
❱
8.14.1.
Normalized Plants and Ranks
❱
8.14.1.1.
2023-04-07-130215 Plant Relastionships
❱
8.14.1.1.1.
down.sql
8.14.1.1.2.
up.sql
8.14.1.2.
example_queries.sql
8.14.2.
One Table Per Taxonomy
❱
8.14.2.1.
2023-03-09-194135 Plant Relations
❱
8.14.2.1.1.
down.sql
8.14.2.1.2.
up.sql
8.14.3.
Taxonomy Ranks And Concrete Plants
❱
8.14.3.1.
2023-04-04-220813 Taxons
❱
8.14.3.1.1.
down.sql
8.14.3.1.2.
up.sql
8.14.3.2.
2023-04-04-220921 Plant Relationships
❱
8.14.3.2.1.
down.sql
8.14.3.2.2.
up.sql
8.14.3.3.
2023-04-07-112305 Varieties
❱
8.14.3.3.1.
down.sql
8.14.3.3.2.
up.sql
8.14.3.4.
example_queries.sql
8.15.
Frontend Architecture Pattern
8.16.
Frontend Build Tool
8.17.
Frontend Documentation
8.18.
E2E Testing
8.19.
Frontend Keyhandling
8.20.
Frontend Lazyloading
8.21.
Frontend API Mocking Tool
8.22.
Frontend Offloading
8.23.
Polygon Libraries
8.24.
Frontend Programming Language
8.25.
Frontend State Management
8.26.
Timeline: Custom Date Picker Implementation Decision
8.27.
Frontend UI Framework
8.28.
Map Undo/Redo Implementation
8.29.
Reversible deletion of database entities
8.30.
Search Plants
8.31.
Sync
8.32.
Uuid
9.
Development Setup
10.
Guidelines
❱
10.1.
REST
10.2.
Backend Logging
10.3.
Backend
10.4.
Code
10.5.
Database
10.6.
Documentation
10.7.
e2e
10.8.
Frontend API Calls
10.9.
Creating a New Layer in Frontend
10.10.
Frontend Keybindings
10.11.
Frontend Locators
10.12.
Frontend UI & Usability
10.13.
Frontend
10.14.
i18n
10.15.
Security
10.16.
Versioning
11.
Meetings
❱
11.1.
Meeting 2023-03-07
11.2.
Meeting 2023-03-14
11.3.
Meeting 2023-03-15 Gamification
11.4.
Meeting 2023-03-15 Polyculture Algorithm
11.5.
Meeting 2023-03-20 DB Kick-Off
11.6.
Meeting 2023-03-21
11.7.
Meeting 2023-03-23 Backend Kick-Off
11.8.
Meeting 2023-03-28
11.9.
Meeting 2023-03-30 - Polyculture
11.10.
Meeting 2023-03-31
11.11.
Meeting 2023-04-04
11.12.
Meeting 2023-04-07 DB
11.13.
Meeting 2023-04-07 Frontend
11.14.
Meeting 2023-04-11
11.15.
Meeting 2023-04-18
11.16.
Meeting 2023-04-25
11.17.
Meeting 2023-04-27 DB
11.18.
Meeting 2023-05-02
11.19.
Meeting 2023-05-09
11.20.
Meeting 2023-05-16
11.21.
Meeting 2023-05-23
11.22.
Meeting 2023-05-26 Architecture
11.23.
Meeting 2023-05-30
11.24.
Meeting 2023-06-06
11.25.
Meeting 2023-06-13
11.26.
Meeting 2023-06-20
11.27.
Meeting 2023-06-27
11.28.
Meeting 2023-07-04
11.29.
Meeting 2023-07-11
11.30.
Meeting 2023-07-18
11.31.
Meeting 2023-07-25
11.32.
Meeting 2023-07-31
11.33.
Meeting 2023-08-08
11.34.
Meeting 2023-08-15
11.35.
Meeting 2023-08-22
11.36.
Meeting 2023-08-28
11.37.
Meeting 2023-09-04
11.38.
Meeting 2023-09-11
11.39.
Meeting 2023-09-18
11.40.
Meeting 2023-09-25
11.41.
Meeting 2023-10-02
11.42.
Meeting 2023-10-09
11.43.
Meeting 2023-10-16
11.44.
Meeting 2023-10-23
11.45.
Meeting 2023-10-30
11.46.
Meeting 2023-11-06
11.47.
Meeting 2023-11-13
11.48.
Meeting 2023-11-20
11.49.
Meeting 2023-11-27
11.50.
Meeting 2023-12-04
11.51.
Meeting 2023-12-11
11.52.
Meeting 2023-12-18
11.53.
Meeting 2023-12-27
11.54.
Meeting 2024-01-02
11.55.
Meeting 2024-01-08
11.56.
Meeting 2024-01-15
11.57.
Meeting 2024-01-22
11.58.
Meeting 2024-01-29
11.59.
Meeting 2024-02-05
11.60.
Meeting 2024-02-12
11.61.
Meeting 2024-02-19
11.62.
Meeting 2024-03-11
11.63.
Meeting 25.03.2024
11.64.
Meeting 02.04.2024
11.65.
Meeting 04.04.2024 - Scrum Processes
11.66.
Meeting 08.04.2024
11.67.
Meeting 15.04.2024
11.68.
Meeting 22.04.2024
11.69.
Meeting 06.05.2024
11.70.
Meeting 13.05.2024
11.71.
Meeting 20.05.2024
11.72.
Meeting 27.05.2024
11.73.
Meeting 03.06.2024
11.74.
Meeting 10.06.2024
11.75.
Meeting 17.06.2024
11.76.
Meeting 24.06.2024
11.77.
Meeting 27.06.2024 - Heatmap
11.78.
Meeting 15.07.2024
11.79.
Meeting 22.07.2024
11.80.
Meeting 29.07.2024
11.81.
Meeting 05.08.2024
11.82.
Meeting 12.08.2024
11.83.
Meeting 19.08.2024
11.84.
Meeting 26.08.2024
12.
Mockups
13.
Related
14.
Release Procedure Documentation
15.
Research
❱
15.1.
Nextcloud Integration
16.
Setup scripts for PermaplanT
❱
16.1.
Local Keycloak Setup
16.2.
Nextcloud Setup
16.3.
nginx
16.4.
Postgis Docker
17.
Testing Strategy
❱
17.1.
Backend Testing
17.2.
Frontend testing
17.3.
manual
❱
17.3.1.
Manual Test Protocol
17.3.2.
Report
❱
17.3.2.1.
Heatmap with Shade
17.3.2.2.
Manual Test Report (pre v0.3 case study release)
17.3.2.3.
Manual Test Report (v0.3 case study release)
17.3.2.4.
Manual Test Report (v0.3.1)
17.3.2.5.
Manual Test Report (v0.3.2)
17.3.2.6.
Manual Test Report (v0.3.3)
17.3.2.7.
Manual Test Report (v0.3.4)
17.3.2.8.
Manual Test Report (v0.3.5)
17.3.2.9.
Manual Test Report (v0.3.6)
17.3.2.10.
Manual Test Report (v0.4.0)
17.3.2.11.
Manual Test Report (v0.4.1)
17.3.2.12.
240801
17.3.2.13.
240801_dev
17.3.2.14.
template
18.
Usecases
❱
18.1.
Assigned Use Cases
❱
18.1.1.
Use Case: Copy & Paste Between Own Maps
18.1.2.
Use Case: Copy & Paste Between Users
18.1.3.
Use Case: Copy & Paste Via Icons
18.1.4.
Use Case: Copy & Paste Within the Same Map
18.1.5.
Use Case: Crop Rotation
18.1.6.
Use Case: Fertilization Layer
18.1.7.
Use Case: GeoMap
18.1.8.
Use Case: Hydrology Layer
18.1.9.
Use Case: Infrastructure Layer
18.1.10.
Use Case: Landscape Layer
18.1.11.
Use Case: Map Collaboration
18.1.12.
Use Case: Map Timeline Range Selection
18.1.13.
Use Case: Map to PDF
18.1.14.
Use Case: New Member Notification
18.1.15.
Use Case: Plant Database Update Notification
18.1.16.
Use Case: Relation Layer
18.1.17.
Use Case: Soil Layer
18.1.18.
Use Case: Watering Layer
18.1.19.
Use Case: Zones Layer
18.2.
Current Use Cases
❱
18.2.1.
Use Case: Heatmap
18.2.2.
Use Case: Remember Viewing State
18.2.3.
Use Case: Shade Layer
18.3.
Done Use Cases
❱
18.3.1.
Use Case: Additional Layer
18.3.2.
Use Case: Area of Plantings
18.3.3.
Use Case: Base Layer
18.3.4.
Use Case: Entry and List of Seeds
18.3.5.
Use Case: Grid
18.3.6.
Use Case: Guided Tour
18.3.7.
Use Case: Landing Page
18.3.8.
Use Case: Layer Visibility
18.3.9.
Use Case: Login
18.3.10.
Use Case: Manage Additional Layers
18.3.11.
Use Case: Map Creation
18.3.12.
Use Case: Map Deletion
18.3.13.
Use Case: Map Search
18.3.14.
Use Case: Map Timeline Event View
18.3.15.
Use Case: Map Timeline Single Selection
18.3.16.
Use Case: Map Undo/Redo
18.3.17.
Use Case: Measuring Distance
18.3.18.
Use Case: Multi-Select
18.3.19.
Use Case: Plants Layer
18.3.20.
Use Case: Rename Layers
18.3.21.
Use Case: Search Plants
18.3.22.
Use Case: Translation
18.3.23.
Use Case: Zoom
18.4.
Draft Use Cases
❱
18.4.1.
Use Case: Add Plant Relationships
18.4.2.
Use Case: Contributing Member
18.4.3.
Use Case: Diff
18.4.4.
Use Case: Dimensioning Layer
18.4.5.
Use Case: Diversity Score
18.4.6.
Use Case: Event Notification
18.4.7.
Use Case: Experimental Results
18.4.8.
Use Case: Gain Blossoms
18.4.9.
Use Case: Habitats Layer
18.4.10.
Use Case: Import and Export Maps
18.4.11.
Use Case: Ingredient Lists
18.4.12.
Use Case: Landing Page News
18.4.13.
Use Case: Layer Alternatives
18.4.14.
Use Case: Map Honors
18.4.15.
Use Case: Map-Specific Favorite Groups
18.4.16.
Use Case: Map Statistics
18.4.17.
Use Case: Matchmaking
18.4.18.
Use Case: Membership Application
18.4.19.
Use Case: New Plant
18.4.20.
Use Case: Offline
18.4.21.
Use Case: Paths Layer
18.4.22.
Use Case: Plant Lore
18.4.23.
Use Case: Review Plant
18.4.24.
Use Case: Review Plant Relationships
18.4.25.
Use Case: Reward Preview
18.4.26.
Use Case: Terrain Layer
18.4.27.
Use Case: Todo Layer
18.4.28.
Use Case: Trees Layer
18.4.29.
Use Case: Winds Layer
18.5.
Later Use Cases
❱
18.5.1.
Use Case: Buy Seeds
18.5.2.
Use Case: Calendar
18.5.3.
Use Case: Incomplete Groups
18.5.4.
Use Case: Nextcloud Circles
18.5.5.
Use Case: Suggest Plants
18.5.6.
Use Case: Visitor chat
Light
Rust
Coal
Navy
Ayu
PermaplanT
Code
For both frontend/backend:
avoid magic constants, prefer to use constant variables instead
avoid obviously inefficient code if more efficient solutions are available (please benchmark or ask in case of doubt)