@ihsandeen/aya 1.0.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 (112) hide show
  1. package/CONTRIBUTING.md +39 -0
  2. package/LICENSE +21 -0
  3. package/README.md +141 -0
  4. package/dist/commands/adab.js +28 -0
  5. package/dist/commands/adhan.js +58 -0
  6. package/dist/commands/anatomy.js +29 -0
  7. package/dist/commands/blame.js +29 -0
  8. package/dist/commands/commit.js +44 -0
  9. package/dist/commands/diff.js +54 -0
  10. package/dist/commands/dua.js +34 -0
  11. package/dist/commands/fast.js +36 -0
  12. package/dist/commands/friday.js +21 -0
  13. package/dist/commands/hero.js +69 -0
  14. package/dist/commands/hijri.js +42 -0
  15. package/dist/commands/history.js +98 -0
  16. package/dist/commands/init.js +54 -0
  17. package/dist/commands/invest.js +26 -0
  18. package/dist/commands/journal.js +84 -0
  19. package/dist/commands/journey.js +24 -0
  20. package/dist/commands/lens.js +58 -0
  21. package/dist/commands/memorize.js +117 -0
  22. package/dist/commands/mirror.js +47 -0
  23. package/dist/commands/names.js +48 -0
  24. package/dist/commands/nature.js +28 -0
  25. package/dist/commands/nazm.js +100 -0
  26. package/dist/commands/parable.js +332 -0
  27. package/dist/commands/prayers.js +63 -0
  28. package/dist/commands/pull.js +28 -0
  29. package/dist/commands/push.js +156 -0
  30. package/dist/commands/qibla.js +118 -0
  31. package/dist/commands/repo.js +34 -0
  32. package/dist/commands/sabr.js +32 -0
  33. package/dist/commands/scene.js +54 -0
  34. package/dist/commands/seek.js +28 -0
  35. package/dist/commands/shukr.js +22 -0
  36. package/dist/commands/sleep.js +26 -0
  37. package/dist/commands/sound.js +35 -0
  38. package/dist/commands/status.js +109 -0
  39. package/dist/commands/sunnah.js +24 -0
  40. package/dist/commands/tafsir.js +89 -0
  41. package/dist/commands/tasbih.js +50 -0
  42. package/dist/commands/wudu.js +22 -0
  43. package/dist/commands/zakat.js +72 -0
  44. package/dist/data/commands-db.js +365 -0
  45. package/dist/data/events.js +105 -0
  46. package/dist/data/gems.js +160 -0
  47. package/dist/data/nak.js +616 -0
  48. package/dist/data/tafsir.js +157 -0
  49. package/dist/data/vocab.js +105 -0
  50. package/dist/index.js +86 -0
  51. package/dist/server.js +140 -0
  52. package/dist/utils/config.js +38 -0
  53. package/dist/utils/logger.js +104 -0
  54. package/dist/utils/printer.js +36 -0
  55. package/docs/index.html +1048 -0
  56. package/docs/repo.html +952 -0
  57. package/package.json +55 -0
  58. package/public/hero.html +285 -0
  59. package/public/index.html +1039 -0
  60. package/public/repo.html +904 -0
  61. package/src/commands/adab.ts +24 -0
  62. package/src/commands/adhan.ts +55 -0
  63. package/src/commands/anatomy.ts +25 -0
  64. package/src/commands/blame.ts +31 -0
  65. package/src/commands/commit.ts +42 -0
  66. package/src/commands/diff.ts +56 -0
  67. package/src/commands/dua.ts +34 -0
  68. package/src/commands/fast.ts +35 -0
  69. package/src/commands/friday.ts +17 -0
  70. package/src/commands/hero.ts +73 -0
  71. package/src/commands/hijri.ts +43 -0
  72. package/src/commands/history.ts +103 -0
  73. package/src/commands/init.ts +53 -0
  74. package/src/commands/invest.ts +22 -0
  75. package/src/commands/journal.ts +97 -0
  76. package/src/commands/journey.ts +20 -0
  77. package/src/commands/lens.ts +58 -0
  78. package/src/commands/memorize.ts +131 -0
  79. package/src/commands/mirror.ts +48 -0
  80. package/src/commands/names.ts +46 -0
  81. package/src/commands/nature.ts +24 -0
  82. package/src/commands/nazm.ts +102 -0
  83. package/src/commands/parable.ts +360 -0
  84. package/src/commands/prayers.ts +65 -0
  85. package/src/commands/pull.ts +28 -0
  86. package/src/commands/push.ts +171 -0
  87. package/src/commands/qibla.ts +127 -0
  88. package/src/commands/repo.ts +34 -0
  89. package/src/commands/sabr.ts +28 -0
  90. package/src/commands/scene.ts +56 -0
  91. package/src/commands/seek.ts +24 -0
  92. package/src/commands/shukr.ts +19 -0
  93. package/src/commands/sleep.ts +23 -0
  94. package/src/commands/sound.ts +34 -0
  95. package/src/commands/status.ts +132 -0
  96. package/src/commands/sunnah.ts +21 -0
  97. package/src/commands/tafsir.ts +86 -0
  98. package/src/commands/tasbih.ts +49 -0
  99. package/src/commands/wudu.ts +19 -0
  100. package/src/commands/zakat.ts +73 -0
  101. package/src/data/commands-db.ts +372 -0
  102. package/src/data/events.ts +113 -0
  103. package/src/data/gems.ts +163 -0
  104. package/src/data/nak.ts +805 -0
  105. package/src/data/tafsir.ts +165 -0
  106. package/src/data/vocab.ts +114 -0
  107. package/src/index.ts +94 -0
  108. package/src/server.ts +128 -0
  109. package/src/utils/config.ts +44 -0
  110. package/src/utils/logger.ts +122 -0
  111. package/src/utils/printer.ts +38 -0
  112. package/tsconfig.json +16 -0
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@ihsandeen/aya",
3
+ "version": "1.0.0",
4
+ "description": "A CLI tool for the mindful Muslim developer. Track your spiritual commits, manage your sins (issues), and push good deeds to the akhira.",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "aya": "./dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "ts-node src/index.ts",
12
+ "start": "ts-node src/index.ts",
13
+ "site": "ts-node src/server.ts",
14
+ "test": "echo \"Error: no test specified\" && exit 1"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/ihsandeen/aya.git"
19
+ },
20
+ "homepage": "https://ihsandeen.github.io/aya",
21
+ "bugs": {
22
+ "url": "https://github.com/ihsandeen/aya/issues"
23
+ },
24
+ "keywords": [
25
+ "islam",
26
+ "muslim",
27
+ "cli",
28
+ "productivity",
29
+ "spiritual",
30
+ "developer",
31
+ "quran",
32
+ "sunnah",
33
+ "prayer-times",
34
+ "adhkar"
35
+ ],
36
+ "author": "Shajedul Karim <shajedulkarim@gmail.com>",
37
+ "license": "MIT",
38
+ "dependencies": {
39
+ "@types/figlet": "^1.7.0",
40
+ "@types/inquirer": "^9.0.9",
41
+ "@types/node": "^25.3.0",
42
+ "axios": "^1.13.5",
43
+ "boxen": "^5.1.2",
44
+ "chalk": "^4.1.2",
45
+ "commander": "^14.0.3",
46
+ "conf": "^15.1.0",
47
+ "date-fns": "^4.1.0",
48
+ "figlet": "^1.10.0",
49
+ "inquirer": "^8.2.7",
50
+ "node-fetch": "^2.7.0",
51
+ "ora": "^5.4.1",
52
+ "ts-node": "^10.9.2",
53
+ "typescript": "^5.9.3"
54
+ }
55
+ }
@@ -0,0 +1,285 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>aya - The CLI for your Soul</title>
7
+ <style>
8
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;800&display=swap');
9
+
10
+ :root {
11
+ --bg-color: #0a0a0a;
12
+ --text-primary: #ffffff;
13
+ --text-secondary: #888888;
14
+ --accent: #d4af37; /* Minimal Classy Gold */
15
+ --glass-bg: rgba(255, 255, 255, 0.03);
16
+ --glass-border: rgba(255, 255, 255, 0.08);
17
+ }
18
+
19
+ * {
20
+ margin: 0;
21
+ padding: 0;
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ body {
26
+ font-family: 'Inter', sans-serif;
27
+ background: var(--bg-color);
28
+ color: var(--text-primary);
29
+ height: 100vh;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ overflow: hidden;
34
+ position: relative;
35
+ }
36
+
37
+ /* Subtle Noise Overlay for Texture */
38
+ .noise {
39
+ position: absolute;
40
+ top: 0;
41
+ left: 0;
42
+ width: 100%;
43
+ height: 100%;
44
+ opacity: 0.03;
45
+ pointer-events: none;
46
+ z-index: 0;
47
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
48
+ }
49
+
50
+ .container {
51
+ position: relative;
52
+ z-index: 1;
53
+ display: flex;
54
+ flex-direction: row;
55
+ align-items: center;
56
+ justify-content: space-between;
57
+ width: 100%;
58
+ max-width: 1200px;
59
+ padding: 0 4rem;
60
+ gap: 4rem;
61
+ }
62
+
63
+ .content {
64
+ flex: 1;
65
+ text-align: left;
66
+ }
67
+
68
+ h1 {
69
+ font-size: 5rem;
70
+ font-weight: 300; /* More minimal weight */
71
+ letter-spacing: -0.05em;
72
+ color: var(--text-primary);
73
+ margin-bottom: 1rem;
74
+ line-height: 1;
75
+ }
76
+
77
+ p.subtitle {
78
+ font-size: 1.25rem;
79
+ color: var(--text-secondary);
80
+ font-weight: 300;
81
+ margin-bottom: 3rem;
82
+ letter-spacing: 0.05em;
83
+ text-transform: uppercase;
84
+ }
85
+
86
+ .features {
87
+ display: flex;
88
+ gap: 3rem;
89
+ margin-bottom: 3rem;
90
+ border-top: 1px solid var(--glass-border);
91
+ padding-top: 2rem;
92
+ }
93
+
94
+ .feature-item {
95
+ display: flex;
96
+ flex-direction: column;
97
+ align-items: flex-start;
98
+ gap: 0.5rem;
99
+ }
100
+
101
+ .feature-icon {
102
+ font-size: 1.25rem;
103
+ color: var(--accent);
104
+ margin-bottom: 0.5rem;
105
+ opacity: 0.8;
106
+ }
107
+
108
+ .feature-title {
109
+ font-size: 0.75rem;
110
+ font-weight: 600;
111
+ text-transform: uppercase;
112
+ letter-spacing: 0.15em;
113
+ color: var(--text-primary);
114
+ }
115
+
116
+ .feature-desc {
117
+ font-size: 0.875rem;
118
+ color: var(--text-secondary);
119
+ max-width: 150px;
120
+ font-weight: 300;
121
+ }
122
+
123
+ .terminal-mockup {
124
+ flex: 1;
125
+ background: #050505;
126
+ border-radius: 4px; /* Minimal radius */
127
+ box-shadow: 0 0 0 1px #222, 0 30px 60px rgba(0,0,0,0.8);
128
+ border: none;
129
+ font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
130
+ overflow: hidden;
131
+ transform: perspective(1000px) rotateY(-5deg) rotateX(5deg);
132
+ transition: transform 0.5s cubic-bezier(0.23, 1, 0.32, 1);
133
+ max-width: 500px;
134
+ }
135
+
136
+ .terminal-mockup:hover {
137
+ transform: perspective(1000px) rotateY(0deg) rotateX(0deg);
138
+ }
139
+
140
+ .terminal-header {
141
+ background: #0a0a0a;
142
+ padding: 0.75rem 1rem;
143
+ display: flex;
144
+ gap: 0.5rem;
145
+ border-bottom: 1px solid #222;
146
+ }
147
+
148
+ .dot {
149
+ width: 10px;
150
+ height: 10px;
151
+ border-radius: 50%;
152
+ background: #333;
153
+ }
154
+ /* Standard Window Colors */
155
+ .dot.red { background: #ff5f56; }
156
+ .dot.yellow { background: #ffbd2e; }
157
+ .dot.green { background: #27c93f; }
158
+
159
+ .terminal-body {
160
+ padding: 1.5rem;
161
+ color: #a3a3a3;
162
+ font-size: 0.85rem;
163
+ line-height: 1.6;
164
+ }
165
+
166
+ .prompt { color: #555; }
167
+ .cmd { color: #fff; }
168
+ .success { color: var(--accent); }
169
+ .info { color: #555; }
170
+ .value { color: #fff; }
171
+
172
+ .footer {
173
+ position: absolute;
174
+ bottom: 2rem;
175
+ width: 100%;
176
+ text-align: center;
177
+ font-size: 0.75rem;
178
+ color: var(--text-secondary);
179
+ letter-spacing: 0.1em;
180
+ text-transform: uppercase;
181
+ opacity: 0.5;
182
+ }
183
+
184
+ code.install-cmd {
185
+ background: rgba(255,255,255,0.05);
186
+ padding: 0.2rem 0.5rem;
187
+ border-radius: 2px;
188
+ color: var(--accent);
189
+ font-family: monospace;
190
+ margin-left: 0.5rem;
191
+ border: 1px solid #222;
192
+ text-transform: none; /* Ensure command is lowercase */
193
+ }
194
+
195
+ /* Moon/Star decoration */
196
+ .decoration {
197
+ position: absolute;
198
+ top: 10%;
199
+ right: 10%;
200
+ width: 150px;
201
+ height: 150px;
202
+ opacity: 0.8;
203
+ filter: drop-shadow(0 0 20px rgba(250, 204, 21, 0.3));
204
+ animation: float 6s ease-in-out infinite;
205
+ }
206
+
207
+ @keyframes float {
208
+ 0%, 100% { transform: translateY(0); }
209
+ 50% { transform: translateY(-20px); }
210
+ }
211
+
212
+ @media (max-width: 768px) {
213
+ .container {
214
+ flex-direction: column;
215
+ text-align: center;
216
+ padding: 2rem;
217
+ }
218
+ .content { text-align: center; }
219
+ .features { justify-content: center; }
220
+ .feature-item { align-items: center; }
221
+ .feature-desc { text-align: center; }
222
+ .terminal-mockup { width: 100%; transform: none; margin-top: 2rem; }
223
+ h1 { font-size: 3rem; }
224
+ }
225
+ </style>
226
+ </head>
227
+ <body>
228
+
229
+ <div class="noise"></div>
230
+
231
+ <div class="container">
232
+ <div class="content">
233
+ <h1>aya</h1>
234
+ <p class="subtitle">The CLI for the Mindful Muslim</p>
235
+
236
+ <div class="features">
237
+ <div class="feature-item">
238
+ <div class="feature-icon">01</div>
239
+ <div class="feature-title">Status</div>
240
+ <div class="feature-desc">Is your heart connected to Allah?</div>
241
+ </div>
242
+ <div class="feature-item">
243
+ <div class="feature-icon">02</div>
244
+ <div class="feature-title">Commit</div>
245
+ <div class="feature-desc">Make your deeds witness for you on Judgment Day.</div>
246
+ </div>
247
+ <div class="feature-item">
248
+ <div class="feature-icon">03</div>
249
+ <div class="feature-title">Push</div>
250
+ <div class="feature-desc">Transfer your deeds to your Book with Allah.</div>
251
+ </div>
252
+ </div>
253
+ </div>
254
+
255
+ <div class="terminal-mockup">
256
+ <div class="terminal-header">
257
+ <div class="dot red"></div>
258
+ <div class="dot yellow"></div>
259
+ <div class="dot green"></div>
260
+ </div>
261
+ <div class="terminal-body">
262
+ <div><span class="prompt">$</span> <span class="cmd">aya status</span></div>
263
+ <div style="margin-top: 1rem">
264
+ <span class="success">+</span> Location: <span class="value">Mecca, SA</span><br>
265
+ <span class="success">+</span> Date: <span class="value">20 Feb 2026</span><br>
266
+ <span class="success">+</span> Hijri: <span class="value">03 Ramadan 1447</span><br>
267
+ <span class="success">+</span> Heart: <span class="value">Connected to Allah</span>
268
+ </div>
269
+ <div style="margin-top: 1.5rem; padding: 1rem; border: 1px solid #222; border-radius: 2px;">
270
+ <span class="info">NEXT PRAYER</span><br>
271
+ <span class="value" style="font-size: 1.2em; font-weight: bold;">ASR</span> <span class="info" style="margin-left: 1rem;">01:45:30</span>
272
+ </div>
273
+ <div style="margin-top: 1.5rem">
274
+ <span class="prompt">$</span> <span class="cmd">_</span>
275
+ </div>
276
+ </div>
277
+ </div>
278
+ </div>
279
+
280
+ <div class="footer">
281
+ Open Source | MIT License | <code class="install-cmd">npm install -g @ihsandeen/aya</code>
282
+ </div>
283
+
284
+ </body>
285
+ </html>