You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This installs dependencies, configures FakeWallet, and starts LNbits in debug mode.
36
16
37
-
```bash
38
-
# One-command dev setup (installs, configures, and starts)
39
-
make dev
40
-
```
17
+
::: tip Prefer manual setup?
18
+
See the full installation guides for [uv](/guide/installation/uv), [Poetry](/guide/installation/poetry), or [Nix](/guide/installation/nix). Use [FakeWallet](/guide/wallets/fakewallet) for development - it simulates Lightning payments without a real node.
19
+
:::
41
20
42
21
### Pre-commit hooks
43
22
44
-
Set up pre-commit hooks to catch issues before committing:
45
-
46
23
```bash
47
-
# Install pre-commit hooks
48
24
pre-commit install
49
-
50
-
# Run hooks manually on all files
51
25
pre-commit run --all-files
52
26
```
53
27
54
28
### LNbits CLI
55
29
56
-
LNbits includes a CLI tool for common operations:
57
-
58
30
```bash
59
-
# See available commands
60
-
lnbits-cli --help
61
-
62
-
# Run database migrations
63
-
lnbits-cli migrate
64
-
65
-
# Create a superuser
66
-
lnbits-cli superuser
31
+
lnbits-cli --help # available commands
32
+
lnbits-cli migrate # run database migrations
33
+
lnbits-cli superuser # create a superuser
67
34
```
68
35
69
36
## Development workflow
@@ -94,17 +61,7 @@ If your extension absolutely requires a new Python package whose needs are not m
94
61
95
62
1.**Check `pyproject.toml` first** - search for an existing package that covers your need
96
63
2.**Open an issue** on GitHub explaining why the dependency is necessary and what alternatives you evaluated
97
-
3.**Add the dependency** to `pyproject.toml`:
98
-
99
-
```bash
100
-
# With Poetry
101
-
poetry add package-name
102
-
103
-
# With uv
104
-
uv pip install package-name
105
-
# then manually add to pyproject.toml
106
-
```
107
-
64
+
3.**Add the dependency** to `pyproject.toml`
108
65
4.**Test compatibility across all supported installers:**
109
66
110
67
```bash
@@ -129,7 +86,7 @@ All three installation methods (uv, Poetry, Nix) must work. A PR that breaks any
129
86
### What gets rejected
130
87
131
88
| Reason | Example |
132
-
|---|---|
89
+
|---|---|
133
90
| Duplicate functionality | Adding `requests` when `httpx` is already available |
134
91
| Heavy/bloated package | Adding a large framework for a small utility |
135
92
| Unmaintained package | No releases or commits in 12+ months |
@@ -139,31 +96,21 @@ All three installation methods (uv, Poetry, Nix) must work. A PR that breaks any
139
96
## Testing
140
97
141
98
```bash
142
-
# Run all tests
143
-
make test
99
+
make test# run all tests
100
+
make format # run formatting check
101
+
make mypy # run type checking
102
+
make all # format + lint + type check + tests
144
103
145
104
# Run specific test file
146
-
poetry run pytest tests/test_wallets.py
147
-
148
-
# Run with verbose output
149
-
poetry run pytest -v
150
-
151
-
# Run formatting check
152
-
make format
153
-
154
-
# Run type checking
155
-
make mypy
156
-
157
-
# Run all checks (format + lint + type check + tests)
158
-
make all
105
+
poetry run pytest tests/test_wallets.py -v
159
106
```
160
107
161
108
Tests must pass on both SQLite and PostgreSQL.
162
109
163
110
## Project branches
164
111
165
112
| Branch | Purpose |
166
-
|---|---|
113
+
|---|---|
167
114
|`main`| Stable releases |
168
115
|`dev`| Active development (PR target) |
169
116
|`feature/*`| Feature branches |
@@ -178,31 +125,21 @@ Found something broken? [Open an issue on GitHub](https://github.com/lnbits/lnbi
178
125
- Relevant logs (mask any secrets, macaroons, or API keys!)
179
126
- Steps to reproduce the issue
180
127
181
-
For extension bugs, open the issue on the extension's own repo (linked from each extension page).
128
+
For extension bugs, open the issue on the extension's own repo (linked from each [extension page](/extensions/)).
182
129
183
130
## Contributing to documentation
184
131
185
-
This docs site pulls extension pages directly from each extension's GitHub repository. To improve an extension's documentation:
186
-
187
-
1. Go to the extension repo (e.g., `github.com/lnbits/tpos`)
188
-
2. Edit the `README.md` there
189
-
3. Your changes will appear on the docs site at the next build
132
+
The docs site is a separate project. Extension pages are auto-generated from each extension's GitHub README at build time.
190
133
191
-
For core docs (guides, API reference, developer docs), submit a PR to the [docs repository](https://github.com/lnbits/lnbits-docs).
134
+
**To improve an extension page:** Edit the `README.md` in the extension's own repo (e.g., `github.com/lnbits/tpos`). Changes appear on the docs site at the next build.
192
135
193
-
### Translations - great first contribution
136
+
**To improve core docs:** Submit a PR to the [docs repository](https://github.com/DoktorShift/docs_lnbits). Pages are Markdown files in `docs/`.
194
137
195
-
LNbits is used worldwide. If you're a native speaker of a non-English language, helping with translations is one of the easiest and most impactful ways to contribute. No coding required - just language skills and a GitHub account.
138
+
**Not sure where to start?** The [Contribute page](/contribute/) has role-specific guides for developers, testers, writers, designers, entrepreneurs, and ambassadors.
196
139
197
-
##Areas to contribute
140
+
### Translations
198
141
199
-
-**Bug fixes** - check the [GitHub Issues](https://github.com/lnbits/lnbits/issues)
200
-
-**Documentation** - improve extension READMEs or core docs (see above)
201
-
-**Extensions** - build new extensions (see [Building Extensions](/dev/building-extensions))
202
-
-**Wallet backends** - add support for new Lightning services
203
-
-**Frontend** - UI improvements and accessibility
204
-
-**Tests** - increase test coverage
205
-
-**Translations** - help localize LNbits (great first contribution!)
142
+
Translation infrastructure is being planned. If you're a native speaker of a non-English language and want to help shape how translations work, reach out on [Telegram](https://t.me/lnbits). Early volunteers will define the process.
206
143
207
144
## PR checklist
208
145
@@ -221,7 +158,7 @@ LNbits is used worldwide. If you're a native speaker of a non-English language,
221
158
Common CI/review rejection reasons:
222
159
223
160
| Code | Cause | Fix |
224
-
|---|---|---|
161
+
|---|---|---|
225
162
|`LINT_FAIL`| Ruff formatting errors | Run `make format`|
226
163
|`TYPE_ERROR`| Missing type hints | Add type annotations |
227
164
|`WRONG_BRANCH`| PR targets `main`| Rebase onto `dev`|
@@ -232,13 +169,16 @@ Common CI/review rejection reasons:
232
169
233
170
Join the LNbits Telegram group: [@lnbits](https://t.me/lnbits)
234
171
235
-
You can also reach the core team directly via the chat button on [lnbits.com](https://lnbits.com).
236
-
237
172
::: warning Scam warning
238
173
LNbits admins will **never** DM you first. There is **no official LNbits support team** that contacts users privately. If someone messages you claiming to be LNbits support, it is a scam.
239
174
:::
240
175
241
176
## Related Pages
242
177
243
-
-[Building Extensions](/dev/building-extensions)
244
-
-[Architecture](/dev/architecture)
178
+
-[Contribute to LNbits](/contribute/) - role-specific guides for all contributor types
179
+
-[Building Extensions](/dev/building-extensions) - extension development guide
180
+
-[Architecture](/dev/architecture) - internal structure and design decisions
0 commit comments