Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
226 commits
Select commit Hold shift + click to select a range
fe2c98b
chore: add Python .gitignore
theveenrok Nov 30, 2025
dbd8ae4
chore: add MIT license
theveenrok Nov 30, 2025
2864e31
build: configure hatch package layout and alpha version
theveenrok Nov 30, 2025
e684311
chore: configure ruff linting
theveenrok Nov 30, 2025
23afc0e
style: add spacer line between version import and exports
theveenrok Nov 30, 2025
5015913
style: inline __all__ tuple in app package
theveenrok Nov 30, 2025
2e62ffd
chore: add ty lint extra and set environment roots
theveenrok Nov 30, 2025
80e532d
chore: add placeholder tests directory
theveenrok Dec 1, 2025
671b139
chore: format pyproject metadata
theveenrok Dec 1, 2025
6328f1c
chore: add minimal make targets for deps and lint
theveenrok Dec 1, 2025
87fff3c
chore: configure pre-commit hooks
theveenrok Dec 1, 2025
1074cfc
docs: document setup and tooling requirements in README
theveenrok Dec 1, 2025
70569f9
chore: add editorconfig for consistent formatting
theveenrok Dec 2, 2025
e438a62
chore: bump ruff target version to py314
theveenrok Dec 2, 2025
e804314
chore: set 2-space indentation for yaml in editorconfig
theveenrok Dec 2, 2025
f293c61
chore: add make targets for lint and format checks
theveenrok Dec 2, 2025
c46f4c0
ci: point pre-commit hooks to check targets
theveenrok Dec 2, 2025
c438e5b
docs: update lint/format instructions to new make targets
theveenrok Dec 2, 2025
dc529e3
chore: drop obsolete lint make target
theveenrok Dec 2, 2025
d6d1ccf
chore: remove duplicate install and env targets
theveenrok Dec 2, 2025
b4acd7a
chore: add install targets for dev environment setup
theveenrok Dec 2, 2025
88fe4ef
chore: rename install-dev-env to setup-dev
theveenrok Dec 2, 2025
667830a
docs: describe install-dev and setup-dev targets in README
theveenrok Dec 2, 2025
8ecf9ea
chore: clean install targets and drop env alias
theveenrok Dec 2, 2025
5a668c4
style: remove redundant fmt recipe description
theveenrok Dec 2, 2025
f6d7546
ci: add GitHub Actions workflow to run linters and format checks
theveenrok Dec 2, 2025
a9893af
docs: add CONTRIBUTING guide
theveenrok Dec 5, 2025
7e77b28
docs: remove python version requirement from readme
theveenrok Dec 5, 2025
8aa79db
docs: document minimum versions for tooling
theveenrok Dec 5, 2025
24269f9
docs: link tool requirements
theveenrok Dec 5, 2025
034db08
docs: move setup requirements into contributing guide
theveenrok Dec 5, 2025
0906885
ci: add branch filters for push
theveenrok Dec 6, 2025
c74d531
ci: add branch filters for PR
theveenrok Dec 6, 2025
96a3895
Merge branch 'develop' into feature/github-actions
theveenrok Dec 6, 2025
15fc2f8
Merge pull request #1 from LandSight/feature/github-actions
theveenrok Dec 6, 2025
ac1c2fc
chore: add pytest dependency to test group
theveenrok Dec 6, 2025
b1068bd
docs: convert README from md to reST format
theveenrok Dec 7, 2025
78f3bb7
chore: update readme reference to rst file
theveenrok Dec 7, 2025
3836a83
chore: configure pytest
theveenrok Dec 6, 2025
fde8e0c
chore: ignore PLR2004 in tests
theveenrok Dec 6, 2025
590f98f
chore: add target test
theveenrok Dec 6, 2025
d1f8645
ci: reanme job checks to ci
theveenrok Dec 6, 2025
a549e4c
ci: add step run tests
theveenrok Dec 6, 2025
70f1acb
test: add test version format
theveenrok Dec 6, 2025
4a2859c
Merge pull request #7 from LandSight/feature/support-test
ShavrinAleksei Dec 7, 2025
5c191c1
Merge pull request #8 from LandSight/docs/readme-to-rst
ShavrinAleksei Dec 7, 2025
ca02e8b
docs: rewrite and expand contribution guide
theveenrok Dec 8, 2025
89c5ff2
chore: specify 2-space indent for rst format
theveenrok Dec 8, 2025
7dee828
Merge pull request #14 from LandSight/chore/editorconfig-rst-indent
ShavrinAleksei Dec 8, 2025
5fa6516
docs: clarify commit type descriptions
theveenrok Dec 8, 2025
b91b8b6
docs: clarify branch naming examples
theveenrok Dec 8, 2025
a53f0a8
docs: move section on naming branches before section on temporary
theveenrok Dec 8, 2025
0097298
docs: normalize apostrophe in issue closing rule
theveenrok Dec 8, 2025
e48c092
docs: clarify re-review expectation in working with PR
theveenrok Dec 9, 2025
d842791
docs: clarify PR follow-up wording
theveenrok Dec 9, 2025
2e462f6
Merge pull request #11 from LandSight/docs/update-contributing
ShavrinAleksei Dec 10, 2025
e59c5bb
build: add pydantic-settings dependency
theveenrok Dec 12, 2025
ec4fd7e
feat(platform): add constants for project and env file paths
theveenrok Dec 12, 2025
6fdf06c
feat(platform): export constants module
theveenrok Dec 12, 2025
06918e0
feat:(platform): add base config model
theveenrok Dec 12, 2025
b417cf7
feat:(platform): export base config model
theveenrok Dec 12, 2025
98eb3b4
feat:(platform): export config package
theveenrok Dec 12, 2025
dd96612
chore: add env example file
theveenrok Dec 12, 2025
bae54f6
feat: add sphinx support for documentation build (#19)
theveenrok Dec 12, 2025
ada81b0
Merge pull request #21 from LandSight/feature/add-base-config
ShavrinAleksei Dec 12, 2025
50a6388
build: merge install, install-dev and setup-dev targets
theveenrok Dec 12, 2025
c2af240
docs: update setup instructions to use install target
theveenrok Dec 12, 2025
0b55bff
Merge pull request #23 from LandSight/chore/unify-install-makefile
ShavrinAleksei Dec 12, 2025
4d82c9c
feat(platform): add logging config model
theveenrok Dec 12, 2025
6e42387
feat(platform): export logging config
theveenrok Dec 12, 2025
0e2cb16
feat(platform): add logging config loader
theveenrok Dec 12, 2025
77a0bb8
feat(platform): export logging config loader
theveenrok Dec 12, 2025
ea16a68
feat(platform): add helper logging configuration
theveenrok Dec 12, 2025
6452837
feat(platform): add logger accessor helper
theveenrok Dec 12, 2025
4bd77f8
feat(platform): export logging module
theveenrok Dec 12, 2025
61a5218
docs: add logging env variables
theveenrok Dec 12, 2025
f7e340e
fix(platform): add future annotations for TYPE_CHECKING imports
theveenrok Dec 13, 2025
d9fc7fb
refactor(platform): correct LoggingConfig import
theveenrok Dec 13, 2025
dc7f9b1
refactor(platform): export modules instead of the contents of these
theveenrok Dec 13, 2025
e074f09
build: add dependency groups for dev, docs, lint, test
theveenrok Dec 13, 2025
1e31f2c
build: switch Makefile targets to dependency groups
theveenrok Dec 13, 2025
94962ce
build: drop optional dependency extras
theveenrok Dec 13, 2025
997531c
Merge pull request #24 from LandSight/feature/support-logging
ShavrinAleksei Dec 13, 2025
8c18be0
Merge pull request #25 from LandSight/build/switch-to-dependency-groups
ShavrinAleksei Dec 13, 2025
7380a20
ci: add workflow to publish docs to GitHub Pages
theveenrok Dec 13, 2025
4e62cdf
build: add lint target
theveenrok Dec 13, 2025
cc804a2
chore: use lint target for quality checks
theveenrok Dec 13, 2025
7c676fe
ci: use lint target for quality checks
theveenrok Dec 13, 2025
e216364
docs: replace mentions of check-fmt, check-lint, check with lint
theveenrok Dec 13, 2025
e0b9840
build: drop deprecated check targets from Makefile
theveenrok Dec 13, 2025
8f701e3
Merge pull request #28 from LandSight/chore/unify-lint-targets
ShavrinAleksei Dec 14, 2025
29be0c5
ci: add lint workflow
theveenrok Dec 14, 2025
6b92092
ci: add test workflow
theveenrok Dec 14, 2025
b24bd00
ci: update lint workflow path filters
theveenrok Dec 14, 2025
1206783
ci: update test workflow path filters
theveenrok Dec 14, 2025
a085532
ci: drop ci workflow
theveenrok Dec 14, 2025
5365d01
ci: rename job from ci to test into test workflow
theveenrok Dec 14, 2025
344a485
Merge pull request #29 from LandSight/ci/separate-lint-and-tests
ShavrinAleksei Dec 14, 2025
b18225b
chore: swich pydocstyle convention to numpy
theveenrok Dec 14, 2025
e235f3d
Merge pull request #30 from LandSight/chore/swich-pydocstyle-convention
ShavrinAleksei Dec 14, 2025
259858a
docs: add pull request template
theveenrok Dec 15, 2025
b4970d1
chore: add pytest coverage plugin
theveenrok Dec 17, 2025
9791f8a
chore: basic configure coverage
theveenrok Dec 17, 2025
201b912
chore: add coverage options when running tests
theveenrok Dec 17, 2025
c4b26b0
Merge pull request #32 from LandSight/chore/add-coverage
ShavrinAleksei Dec 17, 2025
8e11325
test(logging): add logging config loader tests
theveenrok Dec 17, 2025
98263b7
chore: fix invalid format include groups
theveenrok Dec 17, 2025
9978e12
chore: switch group from lint to dev
theveenrok Dec 17, 2025
b5fd73a
Merge pull request #33 from LandSight/test/logging-config-loader
ShavrinAleksei Dec 17, 2025
a8863fb
chore: add changelog
theveenrok Dec 18, 2025
150ab8e
chore: add towncrier to docs dependency group
theveenrok Dec 18, 2025
6daae60
chore: basic configure towncrier
theveenrok Dec 19, 2025
5b7948a
chore: add changelog build and create fragment targets
theveenrok Dec 19, 2025
fd0bcd8
chore: add custom towncrier fragment types
ShavrinAleksei Dec 20, 2025
56fec18
Merge pull request #34 from LandSight/chore/towncrier-setup
ShavrinAleksei Dec 20, 2025
4e3cf8d
refactor(logging): extract dictConfig builder
theveenrok Dec 20, 2025
8e8ec02
docs: update pull request template
theveenrok Dec 20, 2025
d896dfe
Merge pull request #38 from LandSight/refactor/refactor-logging-build…
ShavrinAleksei Dec 20, 2025
8f75353
Merge pull request #31 from LandSight/docs/add-pull-request-template
ShavrinAleksei Dec 20, 2025
827412e
Migrate to mkdocs (#37)
theveenrok Dec 20, 2025
9be5f4e
chore: add pre-commit to pre-commit dependency group
theveenrok Dec 21, 2025
3d3dc5b
chore: add towncrier to changelog dependency group
theveenrok Dec 21, 2025
979b05f
chore: include groups changelog and pre-commit into dev
theveenrok Dec 21, 2025
c7b90c9
chore: define pytest cache dir
theveenrok Dec 21, 2025
e0dc1aa
chore: define ruff cache dir
theveenrok Dec 21, 2025
47e8856
chore: basic configure just
theveenrok Dec 21, 2025
398c571
chore(pre-commit): drop lint hook
theveenrok Dec 21, 2025
f8a71af
chore(pre-commit): add ruff hooks
theveenrok Dec 21, 2025
864d008
ci(lint): run ruff and ty checks in workflow
theveenrok Dec 21, 2025
3926268
ci(lint): drop run make lint in workflow
theveenrok Dec 21, 2025
58c0454
ci(tests): run pytest in workflow
theveenrok Dec 21, 2025
a9067bf
ci(tests): drop run make test in work
theveenrok Dec 21, 2025
77f0337
chore: drop towncrier from docs dependency group
theveenrok Dec 21, 2025
73fef5f
chore: drop makefile
theveenrok Dec 21, 2025
d2850b0
chore: update verification commands
theveenrok Dec 21, 2025
09c652c
docs: replace make commands with just
theveenrok Dec 21, 2025
1598fc3
chore(just): simplify pytest coverage command
theveenrok Dec 21, 2025
719e24c
Merge pull request #39 from LandSight/chore/migrate-to-just
ShavrinAleksei Dec 22, 2025
c332b67
chore: set requred version for uv
theveenrok Dec 22, 2025
2f70d76
chore: set requred version for ruff
theveenrok Dec 22, 2025
72b3c32
ci(publish-docs): remove dependency from make
theveenrok Dec 22, 2025
e00d336
ci(publish-docs): update name workflow
theveenrok Dec 22, 2025
01e36b5
Merge pull request #42 from LandSight/fix/remove-dependency-from-make
ShavrinAleksei Dec 22, 2025
b44b63a
Merge pull request #41 from LandSight/chore/versions-required
ShavrinAleksei Dec 22, 2025
29b7784
docs: add changelog policy
ShavrinAleksei Dec 22, 2025
bb05f77
docs: add changelog policy section with link to document
ShavrinAleksei Dec 22, 2025
00c0efb
docs: move changelog policy to the docs directory
ShavrinAleksei Dec 22, 2025
7e62ce0
docs: remove inspired links
ShavrinAleksei Dec 22, 2025
836bb3c
docs: fix table
ShavrinAleksei Dec 22, 2025
7fe18b1
docs: rename file into lowercase
ShavrinAleksei Dec 22, 2025
57b5dde
docs: add changelog-policy navigation
ShavrinAleksei Dec 22, 2025
008c3ad
docs: fix bullet lists
ShavrinAleksei Dec 22, 2025
4bc9cf6
docs: update changelog-policy link
ShavrinAleksei Dec 22, 2025
06db7e1
docs: remove unrelated sections
ShavrinAleksei Dec 23, 2025
f555f2b
docs: add CHANGELOG guidelines section
ShavrinAleksei Dec 23, 2025
9547d1f
refactor(CONTRIBUTING): update changelog commands guideline formatting
ShavrinAleksei Dec 23, 2025
ee2d043
refactor(changelog-policy): move summary into the purpose section
ShavrinAleksei Dec 23, 2025
e21125d
Merge pull request #40 from LandSight/docs/changelog-policy
theveenrok Dec 23, 2025
63901c7
docs: add code style document
theveenrok Dec 23, 2025
6b0c6c1
docs: add commit style document
theveenrok Dec 23, 2025
065b269
docs: add breaking change document
theveenrok Dec 23, 2025
8160152
docs: clarify commit message rules on periods and atomicity
theveenrok Dec 23, 2025
9b66c39
docs(changelog-policy): add enforcement section
ShavrinAleksei Dec 28, 2025
edd050b
docs(code-style): update basic rules and remove ruff rules
ShavrinAleksei Dec 28, 2025
3c1e591
docs(commit-style): update rules, format information and remove scopes
ShavrinAleksei Dec 28, 2025
cbbf41f
docs(branching): add branch types, rules and naming
ShavrinAleksei Dec 28, 2025
d1ece98
docs(testing): add testing key principles, policy and naming rules
ShavrinAleksei Dec 28, 2025
8bcc612
docs(issues): add issues rules and requirements
ShavrinAleksei Dec 28, 2025
c344d19
docs(pull-request): add pull request principles and requirements
ShavrinAleksei Dec 28, 2025
53d2495
docs(contributing): add contributing short documentation
ShavrinAleksei Dec 28, 2025
332079c
refactor(README): update README file format
ShavrinAleksei Dec 28, 2025
850d5b7
docs(CONTRIBUTING): delete CONTRIBUTING file
ShavrinAleksei Dec 28, 2025
95fdde9
chore: update README format
ShavrinAleksei Dec 28, 2025
fe25734
docs(mkdocs): update navigation
ShavrinAleksei Dec 28, 2025
e433a4b
refactor(contributing): update sections markup
ShavrinAleksei Dec 28, 2025
19d359b
docs: update mkdocs navigation labels
theveenrok Dec 28, 2025
f310201
docs: add changelog
theveenrok Dec 28, 2025
84e09d8
docs: drop changelog
theveenrok Dec 28, 2025
8c3ba97
chore: point towncrier output to docs changelog
theveenrok Dec 28, 2025
19f9296
docs: add changelog to mkdocs navigation
theveenrok Dec 28, 2025
4dcc60d
docs: reorder navigation
theveenrok Dec 28, 2025
6748b5a
docs: normalize mkdocs nav labels
theveenrok Dec 28, 2025
27fe4b6
docs: move standards docs under standarts section
theveenrok Dec 28, 2025
8820065
docs: rename development section to contributing
theveenrok Dec 28, 2025
56eb573
refactor: remove unused quotes in navigation names
ShavrinAleksei Dec 29, 2025
ba91aed
pr(#43): clarify docs
theveenrok Dec 29, 2025
6ab34b1
chore: bump pre-commit-hooks to v6.0.0
theveenrok Dec 29, 2025
ce5bbc2
chore: bump ty to v0.0.7
theveenrok Dec 29, 2025
ded8dfb
chore: bump ruff to v0.14.10
theveenrok Dec 29, 2025
0019e15
Merge pull request #46 from LandSight/chore/bump-dependencies
ShavrinAleksei Dec 29, 2025
992c8b6
docs: add versioning policy
theveenrok Dec 30, 2025
61915de
docs: add versioning to docs nav
theveenrok Dec 30, 2025
8d864a8
chore: lock dependencies
theveenrok Dec 30, 2025
2bbdf88
chore: update towncrier type to use feat insead of feature
theveenrok Dec 30, 2025
782ccba
docs: use feat instead of feature
theveenrok Dec 30, 2025
4bdce0e
Merge pull request #48 from LandSight/docs/versioning
ShavrinAleksei Dec 31, 2025
acd461f
Merge pull request #49 from LandSight/chore/lock-dependency
ShavrinAleksei Dec 31, 2025
9f620c6
Merge pull request #50 from LandSight/chore/unify-feat-type
ShavrinAleksei Dec 31, 2025
02fa5bc
chore(ruff): add ruff config
theveenrok Jan 11, 2026
32d68b5
chore(pyproject): remove ruff section
theveenrok Jan 11, 2026
e9d6304
chore(just): use env instead of deprecated env_var_or_default
theveenrok Jan 11, 2026
82ef938
Merge pull request #51 from LandSight/chore/decomposite-ruff-config
ShavrinAleksei Jan 12, 2026
18e5721
Merge pull request #52 from LandSight/chore/just-migration
ShavrinAleksei Jan 12, 2026
2d4e118
chore(uv): add uv config
theveenrok Jan 14, 2026
26baef8
chore(uv): remove uv config
theveenrok Jan 14, 2026
a57c028
Merge pull request #53 from LandSight/chore/extract-uv-config
ShavrinAleksei Jan 14, 2026
0b17e5b
chore(pytest): add pytest config
theveenrok Jan 14, 2026
c114f63
chore(coverage): create coverage config file
theveenrok Jan 14, 2026
bfc9e6e
chore(towncrier): add towncrier config file
theveenrok Jan 14, 2026
731f9d3
chore(ty): add ty config file
theveenrok Jan 14, 2026
c4c0907
chore: remove ty section
theveenrok Jan 14, 2026
b1b0194
chore: remove towncrier section
theveenrok Jan 14, 2026
e35df8b
chore: remove coverage section
theveenrok Jan 14, 2026
f6cc9fb
chore: remove pytest section
theveenrok Jan 14, 2026
a8c73a4
chore(version): use static version
theveenrok Jan 14, 2026
1f02c47
chore: remove build system
theveenrok Jan 14, 2026
6b05884
test: remove test app version
theveenrok Jan 14, 2026
ff3c8fc
chore(version): remove version variable
theveenrok Jan 14, 2026
6c5d1eb
chore: add version
theveenrok Jan 14, 2026
dec977d
chore(pytest): remove filter warning option
theveenrok Jan 15, 2026
3dc6b82
test(pytest): add explicit test discovery patterns
theveenrok Jan 15, 2026
fad2c56
chore(pytest): format config arrays on single lines
theveenrok Jan 15, 2026
c749efd
chore(coverage): remove unnecessary quotes in config
theveenrok Jan 15, 2026
60330f7
Merge pull request #54 from LandSight/chore/extract-config
theveenrok Jan 15, 2026
f28dedc
chore: bump lock
theveenrok Jan 17, 2026
dfcbf5b
chore: bump ty
theveenrok Jan 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[run]
branch = true

[paths]
source =
src/app

[report]
exclude_lines =
pragma: not covered
29 changes: 29 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# EditorConfig helps maintain consistent coding styles

root = true

[*]
indent_style = space
indent_size = 4
max_line_length = 120
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

[*.py]
indent_size = 4

[*.{yml,yaml}]
indent_size = 2

[*.md]
trim_trailing_whitespace = false

[*.rst]
indent_size = 2
trim_trailing_whitespace = false

[Makefile]
indent_style = tab
tab_width = 4
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
LOGGING_LEVEL=INFO
LOGGING_FORMATTER=pretty
28 changes: 28 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Summary
<!-- 1–2 sentences about the task and outcome. -->

## Type
- [ ] Release
- [ ] Feature
- [ ] Fix
- [ ] Security
- [ ] Docs
- [ ] Ops
- [ ] Internal
- [ ] Breaking change

## Changes
<!-- Write down exactly what you changed. -->
-

## Verification
- [ ] `just check`

## Docs
- [ ] Docs updated (if needed)

## Tests
- [ ] Tests added/updated (if needed)

## Changelog
- [ ] Added changelog fragment in `changelog.d/`
53 changes: 53 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: "Lint"

on:
push:
branches:
- main
- develop
paths:
- ".github/workflows/lint.yaml"
- "src/**"
- "tests/**"
- "pyproject.toml"
pull_request:
branches:
- main
- develop
paths:
- ".github/workflows/lint.yaml"
- "src/**"
- "tests/**"
- "pyproject.toml"

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
name: "Lint checks"
runs-on: ubuntu-latest
steps:
- name: "Checkout"
uses: actions/checkout@v5

- name: "Install uv"
uses: astral-sh/setup-uv@v7
with:
version: "0.9.17"
enable-cache: true

- name: "Install Python"
run: uv python install

- name: "Run ruff checks"
run: |
uv run ruff check --preview --output-format=github
uv run ruff format --check --preview --output-format=github

- name: "Run ty checks"
run: uv run ty check --output-format=github
34 changes: 34 additions & 0 deletions .github/workflows/publish-docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: "Publish docs"

on:
workflow_dispatch:
push:
branches:
- main

permissions:
contents: write

jobs:
docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Install pngquant
run: sudo apt install -y pngquant

- name: Build docs
run: uv run --group=docs mkdocs build

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
publish_branch: gh-pages
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: build/docs
force_orphan: true
47 changes: 47 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "Test"
on:
push:
branches:
- main
- develop
paths:
- ".github/workflows/test.yaml"
- "src/**"
- "tests/**"
- "pyproject.toml"
pull_request:
branches:
- main
- develop
paths:
- ".github/workflows/test.yaml"
- "src/**"
- "tests/**"
- "pyproject.toml"

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: "Test"
runs-on: ubuntu-latest
steps:
- name: "Checkout"
uses: actions/checkout@v5

- name: "Install uv"
uses: astral-sh/setup-uv@v7
with:
version: "0.9.17"
enable-cache: true

- name: "Install Python"
run: uv python install

- name: "Run tests"
run: uv run --group=test pytest --cov
117 changes: 117 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
env/
venv/
.env
.venv/
ENV/
ENV.bak/
venv.bak/

# PyInstaller
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
*.hypothesis/
.pytest_cache/

# Type checking
.mypy_cache/
.pyre/
.pytype/

# Translations
*.mo
*.pot

# Django stuff
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask / Scrapy stuff
instance/
.webassets-cache

# Sphinx documentation
docs/_build/
doc/_build/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
Pipfile.lock

# poetry
poetry.lock

# celery
celerybeat-schedule
celerybeat.pid

# Environments
.envrc
.direnv/

# VS Code
.vscode/

# PyCharm
.idea/

# macOS
.DS_Store

# System files
Thumbs.db
20 changes: 20 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-merge-conflict
- id: check-toml
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-added-large-files

- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.11.1"
hooks:
- id: pyproject-fmt

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.10
hooks:
- id: ruff-check
- id: ruff-format
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 LandSight

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# LandSight backend.
# LandSight backend

Backend for land parcel analysis: geometry validation, legal constraints, natural and infrastructure profiles, suitability scoring, background workflows. Stores domain logic, DTO/contracts, migrations, API and worker entrypoints.

## Contributing

See [Contributing](https://landsight.github.io/backend/contributing) for requirements, setup commands, and development workflow.
Binary file added docs/assets/images/favicon.ico
Binary file not shown.
Binary file added docs/assets/images/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Changelog

<!-- towncrier release notes start -->
Loading