Skip to content

Commit c80737b

Browse files
authored
Merge pull request #385 from tcheeric/codex/create-documentation-for-extending-events
docs: document extending events
2 parents 692a1ed + e90f565 commit c80737b

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Extending Events
2+
3+
This project uses factories and registries to make it easy to introduce new event types while keeping core classes stable.
4+
5+
## Factory and Registry Overview
6+
7+
- **Event factories** (e.g. [`EventFactory`](../../nostr-java-api/src/main/java/nostr/api/factory/EventFactory.java) and its implementations) centralize event creation so that callers don't have to handle boilerplate like setting the sender, tags, or content.
8+
- **TagRegistry** maps tag codes to concrete implementations, allowing additional tag types to be resolved at runtime without modifying `BaseTag`.
9+
10+
## Adding a New Event Type
11+
12+
1. **Define the kind.** Add a constant to [`Kind`](../../nostr-java-base/src/main/java/nostr/base/Kind.java) or reserve a custom value.
13+
2. **Implement the event.** Create a class under `nostr.event.impl` that extends `GenericEvent` or a more specific base class.
14+
3. **Provide a factory.** Implement a factory extending `EventFactory` to encapsulate default tags and content for the new event.
15+
4. **Register tags.** If the event introduces new tag codes, register their factory functions with [`TagRegistry`](../../nostr-java-event/src/main/java/nostr/event/tag/TagRegistry.java).
16+
5. **Write tests.** Add unit and integration tests covering serialization, deserialization, and NIP compliance.
17+
6. **Follow contributing guidelines.** Run `mvn -q verify` before committing, ensure events comply with Nostr NIPs, and document your changes.
18+
19+
## Testing & Contribution Requirements
20+
21+
- Run `mvn -q verify` from the repository root and ensure all checks pass.
22+
- Include comprehensive tests for new functionality and remove unused imports.
23+
- Summaries of changes and test results are expected in pull requests.
24+
25+
Refer to the repository's `AGENTS.md` for the full list of contribution expectations.

0 commit comments

Comments
 (0)