@tari-project/tarijs 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +127 -67
  2. package/TODO.md +91 -3
  3. package/docusaurus/tari-docs/README.md +200 -17
  4. package/docusaurus/tari-docs/docs/api-reference.md +665 -0
  5. package/docusaurus/tari-docs/docs/contributing.md +619 -0
  6. package/docusaurus/tari-docs/docs/guides/getting-started-tutorial.md +965 -0
  7. package/docusaurus/tari-docs/docs/guides/production-deployment.md +977 -0
  8. package/docusaurus/tari-docs/docs/index.md +114 -11
  9. package/docusaurus/tari-docs/docs/installation.md +142 -1
  10. package/docusaurus/tari-docs/docs/signers/metamask.md +529 -0
  11. package/docusaurus/tari-docs/docs/troubleshooting.md +661 -0
  12. package/docusaurus/tari-docs/package.json +4 -4
  13. package/eslint.config.mjs +9 -0
  14. package/examples/vite-typescript-react/README.md +9 -0
  15. package/examples/vite-typescript-react/eslint.config.js +23 -0
  16. package/examples/vite-typescript-react/index.html +13 -0
  17. package/examples/vite-typescript-react/package.json +35 -0
  18. package/examples/vite-typescript-react/public/vite.svg +1 -0
  19. package/examples/vite-typescript-react/src/App.css +42 -0
  20. package/examples/vite-typescript-react/src/App.tsx +50 -0
  21. package/examples/vite-typescript-react/src/assets/react.svg +1 -0
  22. package/examples/vite-typescript-react/src/index.css +68 -0
  23. package/examples/vite-typescript-react/src/main.tsx +10 -0
  24. package/examples/vite-typescript-react/src/vite-env.d.ts +1 -0
  25. package/examples/vite-typescript-react/tsconfig.app.json +27 -0
  26. package/examples/vite-typescript-react/tsconfig.json +7 -0
  27. package/examples/vite-typescript-react/tsconfig.node.json +25 -0
  28. package/examples/vite-typescript-react/vite.config.ts +7 -0
  29. package/package.json +16 -3
  30. package/packages/builders/package.json +2 -2
  31. package/packages/builders/src/helpers/submitTransaction.ts +10 -35
  32. package/packages/builders/src/transaction/TransactionBuilder.ts +227 -29
  33. package/packages/indexer_provider/package.json +2 -2
  34. package/packages/indexer_provider/src/provider.ts +5 -5
  35. package/packages/indexer_provider/tsconfig.json +4 -2
  36. package/packages/metamask_signer/package.json +2 -2
  37. package/packages/metamask_signer/src/index.ts +3 -15
  38. package/packages/{tari_permissions → permissions}/package.json +2 -2
  39. package/packages/{tari_permissions → permissions}/src/helpers.ts +1 -1
  40. package/packages/permissions/src/index.ts +2 -0
  41. package/packages/{tari_permissions/src/tari_permissions.ts → permissions/src/permissions.ts} +56 -6
  42. package/packages/react-mui-connect-button/moon.yml +71 -0
  43. package/packages/react-mui-connect-button/package.json +40 -0
  44. package/packages/react-mui-connect-button/src/Logos.tsx +60 -0
  45. package/packages/react-mui-connect-button/src/TariConnectButton.tsx +51 -0
  46. package/packages/react-mui-connect-button/src/TariWalletSelectionDialog.tsx +116 -0
  47. package/packages/react-mui-connect-button/src/content/tari-logo-white.svg +18 -0
  48. package/packages/react-mui-connect-button/src/content/tari-logo.svg +18 -0
  49. package/packages/react-mui-connect-button/src/content/walletconnect-logo.svg +13 -0
  50. package/packages/react-mui-connect-button/src/defaultPermissions.ts +0 -0
  51. package/packages/react-mui-connect-button/src/index.ts +24 -0
  52. package/packages/react-mui-connect-button/tsconfig.json +31 -0
  53. package/packages/tari_provider/package.json +2 -2
  54. package/packages/tari_provider/src/TariProvider.ts +6 -1
  55. package/packages/tari_signer/package.json +2 -2
  56. package/packages/tari_universe/package.json +2 -2
  57. package/packages/tari_universe/tsconfig.json +4 -2
  58. package/packages/tarijs/package.json +2 -2
  59. package/packages/tarijs/src/index.ts +27 -49
  60. package/packages/tarijs/src/templates/Account.ts +7 -4
  61. package/packages/tarijs/test/integration-tests/.env +1 -1
  62. package/packages/tarijs/test/integration-tests/wallet_daemon/json_rpc_provider.spec.ts +112 -73
  63. package/packages/tarijs/tsconfig.json +6 -4
  64. package/packages/tarijs/vitest.config.ts +2 -1
  65. package/packages/tarijs_types/package.json +4 -3
  66. package/packages/tarijs_types/src/Account.ts +68 -0
  67. package/packages/tarijs_types/src/Amount.ts +5 -1
  68. package/packages/tarijs_types/src/TransactionResult.ts +1 -8
  69. package/packages/tarijs_types/src/consts.ts +3 -0
  70. package/packages/tarijs_types/src/helpers/index.ts +4 -0
  71. package/packages/tarijs_types/src/helpers/simpleResult.ts +345 -0
  72. package/packages/tarijs_types/src/helpers/txResult.ts +1 -2
  73. package/packages/tarijs_types/src/index.ts +8 -0
  74. package/packages/tarijs_types/src/signer.ts +1 -1
  75. package/packages/wallet_daemon/package.json +2 -2
  76. package/packages/wallet_daemon/src/provider.ts +8 -6
  77. package/packages/wallet_daemon/src/signer.ts +18 -8
  78. package/packages/wallet_daemon/tsconfig.json +1 -1
  79. package/packages/walletconnect/package.json +3 -2
  80. package/packages/walletconnect/src/index.ts +54 -28
  81. package/packages/walletconnect/tsconfig.json +3 -0
  82. package/pnpm-workspace.yaml +15 -7
  83. package/scripts/check_versions.sh +4 -0
  84. package/scripts/clean_everything.sh +38 -0
  85. package/tsconfig.json +6 -0
  86. package/typedoc.json +10 -0
  87. package/packages/tari_permissions/src/index.ts +0 -2
  88. /package/packages/{tari_permissions → permissions}/moon.yml +0 -0
  89. /package/packages/{tari_permissions → permissions}/tsconfig.json +0 -0
@@ -0,0 +1,619 @@
1
+ ---
2
+ sidebar_position: 12
3
+ title: Contributing
4
+ description: Join the tari.js community! Learn how to contribute code, documentation, and ideas to make tari.js better for everyone.
5
+ ---
6
+
7
+ # Contributing to tari.js 🤝
8
+
9
+ > **Welcome, builder!** We're thrilled you want to contribute to tari.js. Whether you're fixing bugs, adding features, improving docs, or sharing ideas — every contribution makes the Tari ecosystem stronger.
10
+
11
+ We welcome contributions to tari.js! This guide will help you get started with contributing to the project, whether you're fixing bugs, adding features, improving documentation, or helping with testing.
12
+
13
+ ## 🌟 **Ways to Contribute**
14
+
15
+ ### 🛠️ **Code Contributions**
16
+ - **🐛 Fix bugs** — Help resolve issues and improve stability
17
+ - **✨ Add features** — Implement new functionality and enhancements
18
+ - **🔧 Optimize performance** — Make tari.js faster and more efficient
19
+ - **🧪 Write tests** — Improve code coverage and reliability
20
+
21
+ ### 📚 **Documentation**
22
+ - **📝 Improve guides** — Make tutorials clearer and more helpful
23
+ - **📖 Add examples** — Show real-world usage patterns
24
+ - **🎥 Create tutorials** — Video guides and walkthroughs
25
+ - **🌐 Translate content** — Help make tari.js globally accessible
26
+
27
+ ### 💡 **Ideas & Feedback**
28
+ - **💭 Share use cases** — Tell us how you're using tari.js
29
+ - **🗳️ Vote on features** — Help prioritize development
30
+ - **🎯 Request features** — Suggest improvements and new capabilities
31
+ - **🐛 Report bugs** — Help us find and fix issues
32
+
33
+ ## 🚀 Quick Start
34
+
35
+ ### Prerequisites
36
+
37
+ Before contributing, ensure you have:
38
+
39
+ - **Node.js 18+** and **pnpm** installed
40
+ - **Git** for version control
41
+ - **tari-ootle** repository cloned at the same folder level as tari.js
42
+ - Basic knowledge of **TypeScript**, **React**, and **blockchain concepts**
43
+
44
+ ### Development Setup
45
+
46
+ 1. **Fork and Clone**
47
+ ```bash
48
+ # Fork the repository on GitHub, then:
49
+ git clone https://github.com/YOUR-USERNAME/tari.js.git
50
+ cd tari.js
51
+
52
+ # Add upstream remote
53
+ git remote add upstream https://github.com/tari-project/tari.js.git
54
+ ```
55
+
56
+ 2. **Install Dependencies**
57
+ ```bash
58
+ pnpm install
59
+ ```
60
+
61
+ 3. **Build the Project**
62
+ ```bash
63
+ moon tarijs:build
64
+ ```
65
+
66
+ 4. **Run Tests**
67
+ ```bash
68
+ moon :test
69
+ ```
70
+
71
+ 5. **Start Documentation Site**
72
+ ```bash
73
+ moon tari-docs:start
74
+ ```
75
+
76
+ ## 📋 Development Workflow
77
+
78
+ ### Branch Strategy
79
+
80
+ We use a **feature branch workflow**:
81
+
82
+ - `main` - Production-ready code
83
+ - `develop` - Integration branch for features
84
+ - `feature/feature-name` - Individual features
85
+ - `bugfix/bug-description` - Bug fixes
86
+ - `docs/documentation-updates` - Documentation changes
87
+
88
+ ### Creating a Feature Branch
89
+
90
+ ```bash
91
+ # Update your fork
92
+ git checkout main
93
+ git pull upstream main
94
+
95
+ # Create feature branch
96
+ git checkout -b feature/your-feature-name
97
+
98
+ # Make your changes...
99
+ git add .
100
+ git commit -m "feat: add new wallet integration"
101
+
102
+ # Push to your fork
103
+ git push origin feature/your-feature-name
104
+ ```
105
+
106
+ ### Commit Message Format
107
+
108
+ We follow the [Conventional Commits](https://www.conventionalcommits.org/) specification:
109
+
110
+ ```
111
+ type(scope): brief description
112
+
113
+ [optional body]
114
+
115
+ [optional footer]
116
+ ```
117
+
118
+ **Types:**
119
+ - `feat`: New feature
120
+ - `fix`: Bug fix
121
+ - `docs`: Documentation changes
122
+ - `style`: Code style changes (formatting, etc.)
123
+ - `refactor`: Code refactoring
124
+ - `test`: Adding or updating tests
125
+ - `chore`: Maintenance tasks
126
+
127
+ **Examples:**
128
+ ```bash
129
+ feat(signer): add TariUniverse wallet integration
130
+ fix(provider): handle connection timeout properly
131
+ docs(api): update TransactionBuilder examples
132
+ test(integration): add end-to-end wallet tests
133
+ ```
134
+
135
+ ## 🛠️ Project Structure
136
+
137
+ ### Monorepo Organization
138
+
139
+ ```
140
+ tari.js/
141
+ ├── packages/
142
+ │ ├── tarijs/ # Main package (aggregates all functionality)
143
+ │ ├── tari_provider/ # Base provider interface
144
+ │ ├── tari_signer/ # Base signer interface
145
+ │ ├── indexer_provider/ # Indexer provider implementation
146
+ │ ├── wallet_daemon/ # Wallet daemon integration
147
+ │ ├── metamask_signer/ # MetaMask integration
148
+ │ ├── tari_universe/ # Tari Universe wallet integration
149
+ │ ├── walletconnect/ # WalletConnect integration
150
+ │ ├── builders/ # Transaction building utilities
151
+ │ ├── tarijs_types/ # Shared TypeScript types
152
+ │ └── tari_permissions/ # Permission system
153
+ ├── docusaurus/ # Documentation website
154
+ ├── scripts/ # Build and utility scripts
155
+ └── .github/ # CI/CD workflows
156
+ ```
157
+
158
+ ### Package Development
159
+
160
+ Each package follows a consistent structure:
161
+
162
+ ```
163
+ packages/package-name/
164
+ ├── src/
165
+ │ ├── index.ts # Public API exports
166
+ │ ├── types.ts # Package-specific types
167
+ │ └── [implementation files]
168
+ ├── test/
169
+ │ ├── unit-tests/ # Unit tests
170
+ │ └── integration-tests/ # Integration tests
171
+ ├── package.json # Package configuration
172
+ ├── tsconfig.json # TypeScript configuration
173
+ └── moon.yml # Moon task configuration
174
+ ```
175
+
176
+ ## 🧪 Testing Guidelines
177
+
178
+ ### Test Types
179
+
180
+ 1. **Unit Tests** - Test individual functions and classes
181
+ 2. **Integration Tests** - Test package interactions
182
+ 3. **End-to-End Tests** - Test complete user workflows
183
+
184
+ ### Writing Tests
185
+
186
+ We use **Vitest** for testing. Test files should be co-located with source files or in dedicated test directories.
187
+
188
+ ```typescript
189
+ // Example unit test
190
+ import { describe, it, expect, beforeEach } from 'vitest';
191
+ import { TransactionBuilder } from '../src/TransactionBuilder';
192
+
193
+ describe('TransactionBuilder', () => {
194
+ let builder: TransactionBuilder;
195
+
196
+ beforeEach(() => {
197
+ builder = new TransactionBuilder(Network.LocalNet);
198
+ });
199
+
200
+ it('should set fee correctly', () => {
201
+ const transaction = builder
202
+ .fee(100)
203
+ .build();
204
+
205
+ expect(transaction.feeInstructions).toContain(
206
+ expect.objectContaining({ amount: 100 })
207
+ );
208
+ });
209
+
210
+ it('should throw on invalid fee amount', () => {
211
+ expect(() => builder.fee(-1)).toThrow('Fee must be positive');
212
+ });
213
+ });
214
+ ```
215
+
216
+ ### Integration Tests
217
+
218
+ ```typescript
219
+ // Example integration test
220
+ import { describe, it, expect } from 'vitest';
221
+ import { WalletDaemonTariSigner, IndexerProvider } from '../src';
222
+
223
+ describe('Wallet Integration', () => {
224
+ it('should connect to wallet daemon and submit transaction', async () => {
225
+ const signer = new WalletDaemonTariSigner({
226
+ endpoint: 'http://localhost:18103'
227
+ });
228
+
229
+ const provider = new IndexerProvider({
230
+ endpoint: 'http://localhost:18300'
231
+ });
232
+
233
+ // Test connection
234
+ expect(signer.isConnected()).toBe(true);
235
+
236
+ // Test account retrieval
237
+ const account = await signer.getAccount();
238
+ expect(account.address).toMatch(/^account_[a-f0-9]{64}$/);
239
+
240
+ // Test transaction submission
241
+ const transaction = new TransactionBuilder()
242
+ .fee(100)
243
+ .createAccount(account.public_key)
244
+ .build();
245
+
246
+ const result = await signer.submitTransaction({ transaction });
247
+ expect(result.transactionId).toBeDefined();
248
+ });
249
+ });
250
+ ```
251
+
252
+ ### Running Tests
253
+
254
+ ```bash
255
+ # Run all tests
256
+ moon :test
257
+
258
+ # Run tests for specific package
259
+ moon wallet-daemon:test
260
+
261
+ # Run tests in watch mode
262
+ moon wallet-daemon:test -- --watch
263
+
264
+ # Run integration tests only
265
+ moon :test -- --run integration
266
+ ```
267
+
268
+ ## 📝 Documentation Guidelines
269
+
270
+ ### Types of Documentation
271
+
272
+ 1. **API Documentation** - Generated from TypeScript types and JSDoc
273
+ 2. **User Guides** - Step-by-step tutorials and explanations
274
+ 3. **Developer Documentation** - Architecture and contributing guides
275
+ 4. **Code Comments** - Inline documentation for complex logic
276
+
277
+ ### Writing Documentation
278
+
279
+ #### JSDoc Comments
280
+
281
+ ```typescript
282
+ /**
283
+ * Submits a transaction to the Tari network
284
+ *
285
+ * @param request - Transaction request containing the transaction and options
286
+ * @param request.transaction - The transaction to submit
287
+ * @param request.is_dry_run - Whether to perform a dry run (default: false)
288
+ * @returns Promise resolving to transaction submission result
289
+ *
290
+ * @throws {ConnectionError} When the wallet is not connected
291
+ * @throws {ValidationError} When the transaction is invalid
292
+ *
293
+ * @example
294
+ * ```typescript
295
+ * const transaction = new TransactionBuilder()
296
+ * .fee(100)
297
+ * .callMethod(account, 'transfer', { amount: 1000, destination: 'account_...' })
298
+ * .build();
299
+ *
300
+ * const result = await signer.submitTransaction({ transaction });
301
+ * console.log('Transaction ID:', result.transactionId);
302
+ * ```
303
+ */
304
+ async submitTransaction(request: SubmitTransactionRequest): Promise<SubmitTransactionResponse> {
305
+ // Implementation...
306
+ }
307
+ ```
308
+
309
+ #### Markdown Documentation
310
+
311
+ Follow these guidelines for documentation:
312
+
313
+ - **Clear headings** with proper hierarchy
314
+ - **Code examples** for all API methods
315
+ - **Prerequisites** section for setup requirements
316
+ - **Troubleshooting** section for common issues
317
+ - **Cross-references** to related documentation
318
+
319
+ ### Documentation Development
320
+
321
+ ```bash
322
+ # Start documentation development server
323
+ moon tari-docs:start
324
+
325
+ # Build documentation
326
+ moon tari-docs:build
327
+
328
+ # Deploy documentation (maintainers only)
329
+ moon tari-docs:deploy
330
+ ```
331
+
332
+ ## 🔧 Code Style and Standards
333
+
334
+ ### TypeScript Standards
335
+
336
+ - **Strict TypeScript** configuration enabled
337
+ - **Explicit types** for public APIs
338
+ - **Interface segregation** principle followed
339
+ - **Consistent naming** conventions
340
+
341
+ ```typescript
342
+ // Good: Explicit types and clear naming
343
+ interface WalletConnectionConfig {
344
+ endpoint: string;
345
+ timeout?: number;
346
+ retryAttempts?: number;
347
+ }
348
+
349
+ class WalletService {
350
+ async connect(config: WalletConnectionConfig): Promise<TariSigner> {
351
+ // Implementation with proper error handling
352
+ }
353
+ }
354
+
355
+ // Avoid: Any types and unclear naming
356
+ class Service {
357
+ async connect(config: any): Promise<any> {
358
+ // Implementation
359
+ }
360
+ }
361
+ ```
362
+
363
+ ### Code Formatting
364
+
365
+ We use **Prettier** for code formatting:
366
+
367
+ ```bash
368
+ # Format all files
369
+ pnpm run format
370
+
371
+ # Check formatting
372
+ pnpm run format:check
373
+ ```
374
+
375
+ ### Linting
376
+
377
+ We use **ESLint** for code quality:
378
+
379
+ ```bash
380
+ # Lint all files
381
+ pnpm run lint
382
+
383
+ # Fix linting issues
384
+ pnpm run lint:fix
385
+ ```
386
+
387
+ ### Import Organization
388
+
389
+ ```typescript
390
+ // 1. Node.js built-ins
391
+ import { readFileSync } from 'fs';
392
+
393
+ // 2. External packages
394
+ import React from 'react';
395
+ import { describe, it, expect } from 'vitest';
396
+
397
+ // 3. Internal packages (monorepo)
398
+ import { TariSigner } from '@tari-project/tari-signer';
399
+ import { TransactionBuilder } from '@tari-project/builders';
400
+
401
+ // 4. Relative imports
402
+ import { validateAddress } from '../utils/validation';
403
+ import { ConnectionError } from './errors';
404
+ ```
405
+
406
+ ## 🐛 Bug Reports and Feature Requests
407
+
408
+ ### Reporting Bugs
409
+
410
+ When reporting bugs, include:
411
+
412
+ 1. **Environment Information**
413
+ - OS and browser version
414
+ - Node.js and pnpm versions
415
+ - tari.js version
416
+ - Wallet type and version
417
+
418
+ 2. **Clear Description**
419
+ - What you expected to happen
420
+ - What actually happened
421
+ - Steps to reproduce
422
+
423
+ 3. **Code Examples**
424
+ - Minimal reproduction case
425
+ - Error messages and stack traces
426
+
427
+ 4. **Additional Context**
428
+ - Screenshots or videos if applicable
429
+ - Related issues or discussions
430
+
431
+ ### Feature Requests
432
+
433
+ For feature requests, provide:
434
+
435
+ 1. **Problem Statement** - What problem does this solve?
436
+ 2. **Proposed Solution** - How should it work?
437
+ 3. **Alternatives** - What other solutions have you considered?
438
+ 4. **Use Cases** - Specific scenarios where this would be useful
439
+
440
+ ## 🔍 Code Review Process
441
+
442
+ ### Submitting Pull Requests
443
+
444
+ 1. **Create Feature Branch** from main
445
+ 2. **Implement Changes** with tests and documentation
446
+ 3. **Run Quality Checks**
447
+ ```bash
448
+ pnpm run lint
449
+ pnpm run format:check
450
+ moon :test
451
+ moon :build
452
+ ```
453
+ 4. **Create Pull Request** with clear description
454
+ 5. **Address Review Feedback** promptly
455
+
456
+ ### Pull Request Template
457
+
458
+ ```markdown
459
+ ## Description
460
+ Brief description of changes and motivation.
461
+
462
+ ## Type of Change
463
+ - [ ] Bug fix
464
+ - [ ] New feature
465
+ - [ ] Breaking change
466
+ - [ ] Documentation update
467
+
468
+ ## Testing
469
+ - [ ] Unit tests pass
470
+ - [ ] Integration tests pass
471
+ - [ ] Manual testing completed
472
+
473
+ ## Checklist
474
+ - [ ] Code follows style guidelines
475
+ - [ ] Self-review completed
476
+ - [ ] Documentation updated
477
+ - [ ] No breaking changes (or clearly documented)
478
+ ```
479
+
480
+ ### Review Criteria
481
+
482
+ Reviewers check for:
483
+
484
+ - **Functionality** - Does it work as intended?
485
+ - **Code Quality** - Is it maintainable and readable?
486
+ - **Performance** - Any performance implications?
487
+ - **Security** - Are there security considerations?
488
+ - **Documentation** - Is it properly documented?
489
+ - **Tests** - Are there adequate tests?
490
+
491
+ ## 🏗️ Architecture Guidelines
492
+
493
+ ### Design Principles
494
+
495
+ 1. **Interface Segregation** - Small, focused interfaces
496
+ 2. **Dependency Inversion** - Depend on abstractions, not concretions
497
+ 3. **Single Responsibility** - Each class/function has one purpose
498
+ 4. **Open/Closed** - Open for extension, closed for modification
499
+
500
+ ### Adding New Wallet Integrations
501
+
502
+ To add a new wallet type:
503
+
504
+ 1. **Create Package** in `packages/` directory
505
+ 2. **Implement TariSigner** interface
506
+ 3. **Add Configuration Types** for wallet-specific options
507
+ 4. **Write Unit Tests** for all methods
508
+ 5. **Add Integration Tests** with actual wallet
509
+ 6. **Update Main Package** to export new signer
510
+ 7. **Add Documentation** with usage examples
511
+
512
+ ```typescript
513
+ // Example new signer implementation
514
+ export class NewWalletSigner implements TariSigner {
515
+ readonly signerName = 'NewWallet';
516
+
517
+ constructor(private config: NewWalletConfig) {
518
+ // Initialize wallet connection
519
+ }
520
+
521
+ isConnected(): boolean {
522
+ // Check connection status
523
+ }
524
+
525
+ async getAccount(): Promise<AccountData> {
526
+ // Implement account retrieval
527
+ }
528
+
529
+ async submitTransaction(request: SubmitTransactionRequest): Promise<SubmitTransactionResponse> {
530
+ // Implement transaction submission
531
+ }
532
+
533
+ // ... implement other TariSigner methods
534
+ }
535
+ ```
536
+
537
+ ## 🤝 Community Guidelines
538
+
539
+ ### Communication
540
+
541
+ - **Be respectful** and professional in all interactions
542
+ - **Ask questions** when you need clarification
543
+ - **Provide context** when reporting issues or requesting help
544
+ - **Be patient** with review processes and responses
545
+
546
+ ### Getting Help
547
+
548
+ - **GitHub Discussions** - For questions and general discussion
549
+ - **GitHub Issues** - For bug reports and feature requests
550
+ - **Discord** - Real-time chat with the community
551
+ - **Documentation** - Check existing docs before asking
552
+
553
+ ### Recognition
554
+
555
+ Contributors are recognized through:
556
+
557
+ - **GitHub Contributors** page
558
+ - **Release Notes** acknowledgments
559
+ - **Community Highlights** in project updates
560
+
561
+ ## 🚢 Release Process
562
+
563
+ ### Versioning
564
+
565
+ We follow [Semantic Versioning](https://semver.org/):
566
+
567
+ - **MAJOR** version for breaking changes
568
+ - **MINOR** version for new features
569
+ - **PATCH** version for bug fixes
570
+
571
+ ### Release Workflow
572
+
573
+ 1. **Feature Freeze** - No new features in release branch
574
+ 2. **Testing Phase** - Comprehensive testing of release candidate
575
+ 3. **Documentation Update** - Update all relevant documentation
576
+ 4. **Release Notes** - Document all changes and breaking changes
577
+ 5. **Publication** - Publish to npm registry
578
+ 6. **Announcement** - Notify community of new release
579
+
580
+ ## 📞 Contact and Support
581
+
582
+ ### Maintainers
583
+
584
+ - **Core Team** - GitHub: @tari-project/tari-js-maintainers
585
+ - **Documentation** - Contributions welcome via GitHub
586
+
587
+ ### Community
588
+
589
+ - **Discord** - [Tari Community Discord](https://discord.gg/tari)
590
+ - **GitHub Discussions** - [tari.js Discussions](https://github.com/tari-project/tari.js/discussions)
591
+ - **Twitter** - [@tari](https://twitter.com/tari)
592
+
593
+ ### Reporting Security Issues
594
+
595
+ For security-related issues, please email: security@tari.com
596
+
597
+ Do not report security issues through public GitHub issues.
598
+
599
+ ---
600
+
601
+ ## 🎉 **Ready to Contribute?**
602
+
603
+ ### 🚀 **Quick Start Checklist**
604
+ - [ ] [Set up development environment](#-quick-start)
605
+ - [ ] [Browse good first issues](https://github.com/tari-project/tari.js/labels/good%20first%20issue)
606
+ - [ ] [Join our Discord](https://discord.gg/tari) community
607
+ - [ ] [Read the project roadmap](https://github.com/tari-project/tari.js/blob/main/TODO.md)
608
+ - [ ] [Make your first contribution!](https://github.com/tari-project/tari.js/fork)
609
+
610
+ ### 🏆 **Join Our Community of Builders**
611
+
612
+ **Thank you for contributing to tari.js!** Your efforts help make the Tari ecosystem more accessible and robust for everyone. Together, we're building the future of decentralized applications with privacy at the core.
613
+
614
+ - **🌟 Star the repo** to show your support
615
+ - **📢 Share tari.js** with fellow developers
616
+ - **💬 Connect with us** on Discord and GitHub
617
+ - **🚀 Build something amazing** and share it with the community
618
+
619
+ *Happy coding, and welcome to the Tari family!* 🎉