create-authenik8-app 2.0.2 → 2.0.4
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.
package/README.md
CHANGED
|
@@ -1,71 +1,55 @@
|
|
|
1
|
-
<<<<<<< HEAD
|
|
2
|
-
<<<<<<< HEAD
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
=======
|
|
6
|
-
Good catch — then your README should reflect that. Don’t undersell what you already built.
|
|
7
|
-
|
|
8
|
-
Let’s fix it properly.
|
|
9
|
-
>>>>>>> 5471da4 (Update file README.md)
|
|
10
1
|
|
|
2
|
+
# Create-authenik8-app
|
|
11
3
|
|
|
12
|
-
---
|
|
13
4
|
|
|
14
|
-
<<<<<<< HEAD
|
|
15
|
-
=======
|
|
16
|
-
✅ Updated npm README (with RBAC included)
|
|
17
5
|
|
|
18
|
-
|
|
6
|
+
<p align="center">
|
|
7
|
+
<b> A lightweight authentication infrastructure generator powered by an internal Identity Engine.</b>
|
|
8
|
+
</p>
|
|
19
9
|
|
|
20
|
-
>>>>>>> 5471da4 (Update file README.md)
|
|
21
|
-
# create-authenik8-app
|
|
22
10
|
|
|
23
|
-
|
|
24
|
-
<b>Scaffold secure Express authentication APIs in seconds</b>
|
|
25
|
-
</p>
|
|
26
|
-
<<<<<<< HEAD
|
|
11
|
+

|
|
27
12
|
|
|
28
13
|
<p align="center">
|
|
29
|
-
|
|
14
|
+
<img src="./assets/giffy-ezgif.com-video-to-gif-converter.gif" width="600" />
|
|
30
15
|
</p>
|
|
31
|
-
|
|
32
16
|
---
|
|
33
17
|
|
|
34
|
-
##
|
|
18
|
+
## Usage
|
|
35
19
|
|
|
36
20
|
Create a new project:
|
|
37
21
|
|
|
38
|
-
|
|
22
|
+
bash
|
|
39
23
|
npx create-authenik8-app my-app
|
|
40
24
|
|
|
41
25
|
Then:
|
|
42
26
|
|
|
43
27
|
cd my-app
|
|
44
|
-
|
|
28
|
+
redis-server --daemonize yes
|
|
45
29
|
npm run dev
|
|
46
|
-
|
|
30
|
+
|
|
47
31
|
|
|
48
32
|
---
|
|
49
33
|
|
|
50
34
|
## What you get instantly
|
|
51
35
|
|
|
52
|
-
A fully working Express authentication starter with:
|
|
36
|
+
• A fully working Express authentication starter with:
|
|
53
37
|
|
|
54
|
-
JWT authentication (access + refresh tokens)
|
|
38
|
+
• JWT authentication (access + refresh tokens)
|
|
55
39
|
|
|
56
|
-
Secure refresh token rotation
|
|
40
|
+
• Secure refresh token rotation
|
|
57
41
|
|
|
58
|
-
Redis-based token storage
|
|
42
|
+
• Redis-based token storage
|
|
59
43
|
|
|
60
|
-
Role-Based Access Control (RBAC)
|
|
44
|
+
• Role-Based Access Control (RBAC)
|
|
61
45
|
|
|
62
|
-
TypeScript setup
|
|
46
|
+
• TypeScript setup
|
|
63
47
|
|
|
64
|
-
Express server preconfigured
|
|
48
|
+
• Express server preconfigured
|
|
65
49
|
|
|
66
|
-
Clean scalable folder structure
|
|
50
|
+
• Clean scalable folder structure
|
|
67
51
|
|
|
68
|
-
.env file generated automatically
|
|
52
|
+
• .env file generated automatically
|
|
69
53
|
|
|
70
54
|
|
|
71
55
|
|
|
@@ -99,9 +83,8 @@ Redis (required for refresh tokens)
|
|
|
99
83
|
|
|
100
84
|
---
|
|
101
85
|
|
|
102
|
-
## Redis Setup
|
|
103
|
-
|
|
104
|
-
|
|
86
|
+
## Redis Setup
|
|
87
|
+
|
|
105
88
|
Local
|
|
106
89
|
|
|
107
90
|
redis-server
|
|
@@ -110,228 +93,85 @@ Docker
|
|
|
110
93
|
|
|
111
94
|
docker run -p 6379:6379 redis
|
|
112
95
|
|
|
113
|
-
|
|
96
|
+
|
|
114
97
|
---
|
|
115
98
|
|
|
116
99
|
## Environment Variables
|
|
117
100
|
|
|
118
101
|
Generated automatically:
|
|
119
|
-
|
|
102
|
+
|
|
103
|
+
|
|
120
104
|
JWT_SECRET=your-secret
|
|
121
105
|
REFRESH_SECRET=your-refresh-secret
|
|
122
106
|
|
|
123
107
|
REDIS_HOST=127.0.0.1
|
|
124
108
|
REDIS_PORT=6379
|
|
125
109
|
|
|
126
|
-
|
|
110
|
+
|
|
111
|
+
|
|
127
112
|
---
|
|
128
113
|
|
|
114
|
+
|
|
115
|
+
|
|
129
116
|
## RBAC Example
|
|
130
|
-
```
|
|
131
|
-
Example of a protected route:
|
|
132
117
|
|
|
118
|
+
Example of a protected route:
|
|
119
|
+
``
|
|
133
120
|
app.get("/admin", auth.requireAdmin, (req, res) => {
|
|
134
121
|
res.json({ message: "Admin only route" });
|
|
135
122
|
});
|
|
123
|
+
``
|
|
136
124
|
|
|
137
|
-
```
|
|
138
125
|
---
|
|
139
|
-
|
|
140
|
-
📦 Powered by
|
|
126
|
+
## Powered by
|
|
141
127
|
|
|
142
128
|
authenik8-core
|
|
143
129
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Project Structure
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
my-app/
|
|
152
|
-
├── src/
|
|
153
|
-
│ |
|
|
154
|
-
│ ├
|
|
155
|
-
│ └── server.ts
|
|
156
|
-
├── .env
|
|
157
|
-
├── package.json
|
|
158
|
-
└── tsconfig.json
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Notes
|
|
164
|
-
|
|
165
|
-
Redis is required for refresh token handling
|
|
166
|
-
|
|
167
|
-
This CLI generates a starter project, not a full framework
|
|
168
|
-
|
|
169
|
-
RBAC is included via middleware (e.g. requireAdmin)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## Roadmap
|
|
176
|
-
|
|
177
|
-
OAuth providers (Google, GitHub)
|
|
178
|
-
|
|
179
|
-
Advanced RBAC (custom roles/permissions)
|
|
180
|
-
|
|
181
|
-
Docker templates
|
|
182
|
-
|
|
183
|
-
Admin dashboard
|
|
184
|
-
|
|
185
|
-
Production presets
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
# Create-authenik8-app
|
|
191
|
-
=======
|
|
192
|
-
# create-authenik8-app
|
|
193
|
-
>>>>>>> 01efb21 (Update file README.md)
|
|
194
|
-
|
|
195
|
-
<p align="center">
|
|
196
|
-
<b>Scaffold secure Express authentication APIs in seconds</b>
|
|
197
|
-
</p>
|
|
198
|
-
=======
|
|
199
|
-
>>>>>>> 5471da4 (Update file README.md)
|
|
200
|
-
|
|
201
|
-
<p align="center">
|
|
202
|
-
JWT • Refresh Tokens • Redis • RBAC • TypeScript • Express
|
|
203
|
-
</p>
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Usage
|
|
208
|
-
|
|
209
|
-
Create a new project:
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
-
npx create-authenik8-app my-app
|
|
213
|
-
|
|
214
|
-
Then:
|
|
215
|
-
|
|
216
|
-
cd my-app
|
|
217
|
-
npm install
|
|
218
|
-
npm run dev
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## What you get instantly
|
|
224
|
-
|
|
225
|
-
A fully working Express authentication starter with:
|
|
226
|
-
|
|
227
|
-
JWT authentication (access + refresh tokens)
|
|
228
|
-
|
|
229
|
-
Secure refresh token rotation
|
|
230
|
-
|
|
231
|
-
Redis-based token storage
|
|
232
|
-
|
|
233
|
-
Role-Based Access Control (RBAC)
|
|
234
|
-
|
|
235
|
-
TypeScript setup
|
|
236
|
-
|
|
237
|
-
Express server preconfigured
|
|
238
|
-
|
|
239
|
-
Clean scalable folder structure
|
|
240
|
-
|
|
241
|
-
.env file generated automatically
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
🧠 Why Authenik8?
|
|
248
|
-
|
|
249
|
-
Authentication systems usually require:
|
|
250
|
-
|
|
251
|
-
manual JWT setup
|
|
252
|
-
|
|
253
|
-
refresh token handling
|
|
254
|
-
|
|
255
|
-
Redis/session configuration
|
|
256
|
-
|
|
257
|
-
access control logic
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
Authenik8 provides all of this out of the box so you can start building your API immediately.
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
Requirements
|
|
266
|
-
|
|
267
|
-
Node.js 18+
|
|
268
|
-
|
|
269
|
-
Redis (required for refresh tokens)
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
130
|
---
|
|
274
131
|
|
|
275
|
-
|
|
276
|
-
|
|
132
|
+
## Design Goal
|
|
133
|
+
Authenik8 is not an auth library.
|
|
134
|
+
It is an auth system generator.
|
|
135
|
+
It removes setup time and enforces consistent backend security patterns by default.
|
|
277
136
|
|
|
278
|
-
|
|
137
|
+
Authenik8 treats authentication as an identity resolution problem, not just a login system.
|
|
279
138
|
|
|
280
|
-
|
|
139
|
+
At the core is an Identity Engine that ensures consistent user identity across:
|
|
140
|
+
- credentials (email/password)
|
|
141
|
+
- OAuth providers
|
|
142
|
+
- future authentication strategies
|
|
281
143
|
|
|
282
|
-
Docker
|
|
283
|
-
|
|
284
|
-
docker run -p 6379:6379 redis
|
|
285
|
-
```
|
|
286
144
|
---
|
|
287
145
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
JWT_SECRET=your-secret
|
|
293
|
-
REFRESH_SECRET=your-refresh-secret
|
|
294
|
-
|
|
295
|
-
REDIS_HOST=127.0.0.1
|
|
296
|
-
REDIS_PORT=6379
|
|
297
|
-
```
|
|
146
|
+
## OAuth
|
|
147
|
+
• Google
|
|
148
|
+
• Github
|
|
149
|
+
OAuth in Authenik8 is not a direct provider integration layer.
|
|
298
150
|
|
|
299
|
-
|
|
151
|
+
It is implemented through an internal Identity Engine that sits inside `authenik8-core`.
|
|
300
152
|
|
|
301
|
-
|
|
153
|
+
The Identity Engine is responsible for:
|
|
154
|
+
- Resolving OAuth profiles into system identities
|
|
155
|
+
- Handling login vs account linking flows
|
|
156
|
+
- Preventing duplicate identity creation across providers
|
|
157
|
+
- Normalizing provider-specific user data into a unified schema
|
|
302
158
|
|
|
303
|
-
|
|
304
|
-
```
|
|
305
|
-
app.get("/admin", auth.requireAdmin, (req, res) => {
|
|
306
|
-
res.json({ message: "Admin only route" });
|
|
307
|
-
});
|
|
308
|
-
```
|
|
159
|
+
This allows OAuth support to remain consistent regardless of provider complexity.
|
|
309
160
|
|
|
310
161
|
---
|
|
311
162
|
|
|
312
|
-
|
|
163
|
+
### Production Enhancements
|
|
313
164
|
|
|
314
|
-
|
|
165
|
+
- PM2 cluster mode support
|
|
166
|
+
- Auto restart on crashes
|
|
167
|
+
- Memory usage guardrails
|
|
168
|
+
- Basic security middleware (helmet, rate limiting)
|
|
315
169
|
|
|
316
170
|
|
|
317
171
|
|
|
318
172
|
---
|
|
319
173
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
my-app/
|
|
323
|
-
├── src/
|
|
324
|
-
│ ├
|
|
325
|
-
│ ├
|
|
326
|
-
│ └── server.ts
|
|
327
|
-
├── .env
|
|
328
|
-
├── package.json
|
|
329
|
-
└── tsconfig.json
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
---
|
|
333
|
-
|
|
334
|
-
📌 Notes
|
|
174
|
+
## Notes
|
|
335
175
|
|
|
336
176
|
Redis is required for refresh token handling
|
|
337
177
|
|
|
@@ -343,9 +183,7 @@ RBAC is included via middleware (e.g. requireAdmin)
|
|
|
343
183
|
|
|
344
184
|
---
|
|
345
185
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
OAuth providers (Google, GitHub)
|
|
186
|
+
## Roadmap
|
|
349
187
|
|
|
350
188
|
Advanced RBAC (custom roles/permissions)
|
|
351
189
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-authenik8-app",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
|
+
|
|
4
5
|
"description":"Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
|
|
5
6
|
"bin": {
|
|
6
7
|
"create-authenik8-app": "dist/bin/index.js"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
apps: [
|
|
3
|
+
{
|
|
4
|
+
name: "authenik8-app",
|
|
5
|
+
script: "src/server.ts",
|
|
6
|
+
instances: "max",
|
|
7
|
+
interpreter:"node",
|
|
8
|
+
exec_mode: "cluster",
|
|
9
|
+
watch: false,
|
|
10
|
+
max_memory_restart: "300M",
|
|
11
|
+
env: {
|
|
12
|
+
NODE_ENV: "production",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|