feat(payments): subscription lifecycle, renewal invoices and plan-based write access
Mantenedores costumam responder em até 1 dia
@Priyanshubhartistm já está trabalhando nisso.
Desde 19/10/2026.
- #909 de @Priyanshubhartistm — aberto
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Is your feature request related to a problem? Please describe.
With the subscription data model in place, nothing creates or extends a subscription, issues renewal invoices, or ends access when a period lapses. Write access still depends only on the permanent is_admitted flag.
Describe the solution you'd like
- A
SubscriptionServicefor subscribe, renew and status transitions (active → renewal_pending → past_due → expired). PaymentsService.confirmInvoiceextends the subscription period (same transaction as the invoice confirmation). All five confirmation paths (maintenance poll and the Zebedee/LNbits/OpenNode/Nodeless callbacks) already go through it, so the invoice carries itsplan_idinstead of each callback learning about plans.POST /invoicesaccepts a plan id; existing admission behaviour is unchanged when no plans are configured.- A periodic sweep (maintenance worker) that issues renewal invoices before period end and moves overdue subscriptions through grace to expired.
isUserAdmittedchecks for an active subscription, reusing the existing admission cache so there is no extra database read per event.- Tests for each transition, the confirm path, and the cache behaviour.
Additional context
- Design: #673. Renewal is invoice-based: Lightning cannot pull funds, so the relay issues a renewal invoice and the user pays it.
- Linguagem predominante
- TypeScript
- Estrelas
- 829
- Forks
- 234
- Merge médio
- 17h 46min
- PRs com merge (30d)
- 73
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de cameri/nostream
-
Website
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
Three repositories have no unit tests (notification-outbox, notification-delivery-log, nip05-verification)Talvez já em andamento @Priyanshubhartistm assumiu hoje. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 72/100
cameri/nostream#905 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
No unit tests for four of six payment processors (nodeless, lnurl, opennode, zebedee)Talvez já em andamento @Priyanshubhartistm assumiu hoje. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
cameri/nostream#903 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
cameri/nostream#902 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de cameri/nostream
Issues semelhantes
-
Edit: Tele Posadas HDAbertacheck:passed streams:edit
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
area:mcp bug has repro platform:vscode regression
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
anthropics/claude-code#103970 ·
Mantenedores costumam responder em até 1 dia
-
skillopt: success-reflect prompt omits the edit schema, so every success-only edit is droppedAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Workspace secrets/constants containing "$" are corrupted when resolved in data source optionsAbertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
sdk-typescript: unquoted COPY globs in shell form are silently dropped from the image build contextAbertabug javascript
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia