create-foliokit 1.0.0 β†’ 1.0.1

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,378 +1,112 @@
1
- # FolioKit
1
+ # πŸš€ FolioKit
2
2
 
3
+ [![npm](https://img.shields.io/npm/v/create-foliokit.svg)](https://www.npmjs.com/package/create-foliokit)
4
+ [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D22.12.0-brightgreen.svg)](package.json)
3
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
4
- [![Node.js Version](https://img.shields.io/badge/node-%3E%3D22.12.0-brightgreen.svg)](package.json)
5
- [![npm version](https://img.shields.io/npm/v/foliokit.svg)](https://www.npmjs.com/package/foliokit)
6
6
 
7
- > A modern, zero-config CLI generator that scaffolds high-performance, customizable developer portfolios built with React 19, TypeScript, and Vite.
7
+ FolioKit is a CLI for creating a customizable developer portfolio. It scaffolds a responsive **React 19**, **TypeScript**, and **Vite** website with a dark grid background, framed sections, social links, and an interactive project gallery.
8
8
 
9
- FolioKit enables developers to launch a sleek, production-ready portfolio in seconds. Instead of wrestling with complex UI code, your entire websiteβ€”from bio and skills to featured projects and social linksβ€”is managed cleanly through a single configuration file: [`data.ts`](templates/default/data.ts).
9
+ Created and maintained by [Saurabh Pandey](https://github.com/saurabhhdev) Β· [GitHub repository](https://github.com/saurabhhdev/foliokit)
10
10
 
11
11
  ---
12
12
 
13
- ## Features
13
+ ## ✨ Make It Yours
14
14
 
15
- - **Instant Scaffolding** β€” Create a complete portfolio project with one command (`npx foliokit`).
16
- - **Single-File Customization** β€” Edit `data.ts` to update all content, projects, bio, skills, and layout ordering without touching React components.
17
- - **Modern Tech Stack** β€” Built with React 19, TypeScript, and Vite for fast development and lightweight production bundles (~80 kB gzip).
18
- - **Aesthetic Obsidian Theme** β€” Designed with a dark graphite palette, atmospheric canvas starfields, and metallic typography accents.
19
- - **Interactive 3D Magazine Carousel** β€” Showcase featured projects in a perspective-lifted cover gallery with mouse-tilt, touch swipe, trackpad wheel gestures, and keyboard navigation.
20
- - **Automatic Skill Icons** β€” Integrates with [Skill Icons](https://skillicons.dev) and Simple Icons for crisp vector technology and brand badges.
21
- - **Dynamic Local Time & Clock** β€” Real-time digital clock synced to your configured IANA time zone.
22
- - **Pre-Configured Content Sections** β€” Hero, About, Skills, Featured Projects, Work Experience, Education, Testimonials, and Contact.
23
- - **Automated SEO & Social Sharing** β€” Build script automatically injects personalized OpenGraph tags, Twitter cards, canonical links, and generates a valid `sitemap.xml` and `robots.txt`.
24
- - **Accessible & Responsive** β€” Verified across mobile (320px+), tablet, laptop, and ultra-wide screens. Full support for `prefers-reduced-motion` and WCAG touch targets.
25
- - **Static Hosting Ready** β€” Zero-config static deployment on Vercel, Netlify, Cloudflare Pages, and GitHub Pages.
15
+ Most portfolio content is edited in one file: `data.ts` in the generated project.
26
16
 
27
- ---
28
-
29
- ## Preview
17
+ | What | Where |
18
+ | --- | --- |
19
+ | Name, headline, bio, photo, location, time zone, resume | `data.ts` β†’ `profile` |
20
+ | Social profiles and links | `data.ts` β†’ `socialIcons` |
21
+ | Work history and organization logos | `data.ts` β†’ `experience` |
22
+ | Schools, programs, dates, locations | `data.ts` β†’ `education` |
23
+ | Skill names, icons, and categories | `data.ts` β†’ `skills` |
24
+ | Project details, screenshots, technologies, URLs | `data.ts` β†’ `projects` |
25
+ | Recommendations | `data.ts` β†’ `testimonials` |
26
+ | Contact email | `data.ts` β†’ `contact` |
27
+ | Browser and social preview metadata | `data.ts` β†’ `seo` |
30
28
 
31
- <!-- Portfolio UI Preview Screenshot Placeholder -->
32
- <!-- Place your screenshot here: ![FolioKit Preview](https://raw.githubusercontent.com/saurabhhdev/foliokit/main/preview.png) -->
29
+ Copy images into `public/` and use paths such as `'/my-photo.jpg'` in `data.ts`. The template includes avatar, project, and experience logo placeholders. Leave an optional section array empty (`[]`) to hide that section.
33
30
 
34
- The generated portfolio features a dark obsidian background (`#000000`), subtle starfield overlays, golden metallic accent highlights, and clean dotted framing inspired by modern developer terminals and developer tool aesthetic.
31
+ Interface labels are beside the components in `src/App.tsx` and `src/ProjectMagazineGallery.tsx`. Colors, grid, spacing, and responsive styles are in `src/styles.css` and `src/ProjectMagazineGallery.css`.
35
32
 
36
33
  ---
37
34
 
38
- ## Requirements
39
-
40
- Before running FolioKit, ensure your environment meets these requirements:
35
+ ## πŸ›  Run Locally
41
36
 
42
- - **Node.js**: Version `22.12.0` or higher
43
- - **npm**: Version `10.0.0` or higher (or compatible `pnpm` / `yarn`)
44
- - **Operating Systems**: macOS, Linux, and Windows 10/11
45
-
46
- To verify your installed Node.js version, run:
37
+ You need Node.js **22.12.0 or newer** to run the CLI. No global installation is required.
47
38
 
48
39
  ```bash
49
- node --version
50
- ```
51
-
52
- ---
53
-
54
- ## Quick Start
55
-
56
- Generate your developer portfolio in three steps:
57
-
58
- ### 1. Run the CLI
59
-
60
- ```bash
61
- npx foliokit
62
- ```
63
-
64
- *Or install globally:*
65
-
66
- ```bash
67
- npm install -g foliokit
68
- foliokit
40
+ npx create-foliokit@latest
69
41
  ```
70
42
 
71
- ### 2. Answer the Interactive Prompts
72
-
73
- ```text
74
- FOLIOKIT
75
- Developer Portfolio Generator
76
-
77
- ? What should your project be called? my-portfolio
78
- ? Install dependencies? (Y/n) y
79
- ```
80
-
81
- - **Project name**: Enter a folder name using lowercase letters, numbers, and single hyphens (default: `my-portfolio`).
82
- - **Install dependencies**: Choose whether FolioKit should automatically run `npm install` inside the created folder.
83
-
84
- ### 3. Start Developing
43
+ Choose a project folder name and whether to install dependencies. Then:
85
44
 
86
45
  ```bash
87
46
  cd my-portfolio
88
47
  npm run dev
89
48
  ```
90
49
 
91
- Open [http://localhost:5173](http://localhost:5173) in your browser to view your live portfolio.
92
-
93
- ---
94
-
95
- ## CLI Commands & Options
50
+ Open the local address printed by Vite, usually `http://localhost:5173`. If you skipped dependency installation, run `npm install` in the project folder first.
96
51
 
97
- FolioKit provides a straightforward command-line interface:
98
-
99
- | Command / Option | Description |
100
- | :--- | :--- |
101
- | `npx foliokit` | Runs the interactive project creation wizard in the current directory. |
102
- | `foliokit create` | Explicit subcommand to start the setup wizard. |
103
- | `-v, --version` | Outputs the current installed FolioKit version. |
104
- | `-h, --help` | Displays help information, available flags, and usage syntax. |
105
-
106
- ### Examples
52
+ To install the CLI globally instead:
107
53
 
108
54
  ```bash
109
- # Check installed CLI version
110
- foliokit --version
111
-
112
- # View usage guidelines
113
- foliokit --help
114
-
115
- # Create a new project
116
- foliokit create
117
- ```
118
-
119
- ---
120
-
121
- ## Customization Guide (`data.ts`)
122
-
123
- All portfolio content is centralized in the root `data.ts` file of your generated project. Open `data.ts` in your code editor to personalize your site.
124
-
125
- ### 1. Personal Details & Hero
126
-
127
- ```typescript
128
- profile: {
129
- name: 'Alex Rivera',
130
- headline: 'Full Stack Engineer & Open Source Contributor',
131
- introduction: "Hey, there! I'm a",
132
- about: `I build scalable web applications and developer tools.
133
-
134
- I specialize in React, Node.js, and distributed systems.`,
135
- location: 'San Francisco, CA',
136
- timeZone: 'America/Los_Angeles',
137
- timeZoneLabel: 'PST',
138
- profileImage: '/avatar-placeholder.svg', // or '/my-photo.jpg' placed in public/
139
- quote: 'Build with curiosity. Share what you learn.',
140
- }
141
- ```
142
-
143
- ### 2. Social Links
144
-
145
- Add or update your social media profiles in the `socialIcons` array:
146
-
147
- ```typescript
148
- socialIcons: [
149
- { label: 'GitHub', icon: 'github', url: 'https://github.com/your-username', color: '#f2f0e9' },
150
- { label: 'LinkedIn', icon: 'linkedin', url: 'https://linkedin.com/in/your-username', color: '#0a66c2' },
151
- { label: 'X', icon: 'x', url: 'https://x.com/your-username', color: '#f2f0e9' },
152
- ]
153
- ```
154
-
155
- ### 3. Technical Skills
156
-
157
- Add, remove, or reorder technologies. Icons are automatically fetched from [Skill Icons](https://skillicons.dev) using the `icon` identifier:
158
-
159
- ```typescript
160
- skills: [
161
- { name: 'React', icon: 'react', category: 'Frontend' },
162
- { name: 'TypeScript', icon: 'ts', category: 'Frontend' },
163
- { name: 'Node.js', icon: 'nodejs', category: 'Backend' },
164
- { name: 'PostgreSQL', icon: 'postgres', category: 'Backend' },
165
- { name: 'Docker', icon: 'docker', category: 'Tools' },
166
- ]
167
- ```
168
-
169
- ### 4. Featured Projects
170
-
171
- Projects with `featured: true` appear prominently in the interactive 3D magazine gallery as well as the detailed project cards below:
172
-
173
- ```typescript
174
- projects: [
175
- {
176
- name: 'DevFlow',
177
- category: 'DEVELOPER TOOLING',
178
- description: 'An open-source terminal workflow engine designed to automate repetitive task pipelines.',
179
- image: '/project-placeholder.svg', // Place your thumbnail in public/
180
- imageAlt: 'DevFlow terminal preview',
181
- technologies: [
182
- { name: 'TypeScript', icon: 'ts' },
183
- { name: 'Node.js', icon: 'nodejs' },
184
- ],
185
- liveUrl: 'https://devflow.example',
186
- githubUrl: 'https://github.com/your-username/devflow',
187
- featured: true,
188
- },
189
- ]
190
- ```
191
-
192
- ### 5. Work Experience & Education
193
-
194
- ```typescript
195
- experience: [
196
- {
197
- title: 'Senior Software Engineer',
198
- organization: 'Acme Corp',
199
- date: '2023 – Present',
200
- description: 'Architected microservices and improved core API latency by 35%.',
201
- },
202
- ],
203
- education: [
204
- {
205
- title: 'B.S. in Computer Science',
206
- organization: 'University of California, Berkeley',
207
- date: '2019 – 2023',
208
- description: 'Focused on algorithms, distributed databases, and software engineering.',
209
- },
210
- ]
55
+ npm install --global create-foliokit
56
+ foliokit
211
57
  ```
212
58
 
213
- ### 6. Optional Sections (Testimonials, Experience, Education)
59
+ ### Available commands
214
60
 
215
- Content sections render dynamically based on whether items exist in their array. To omit any optional section from the portfolio, simply leave its array empty:
216
-
217
- ```typescript
218
- // Leave empty to omit this section from the portfolio:
219
- testimonials: [],
220
- experience: [],
221
- education: [],
222
- ```
61
+ | Command | Action |
62
+ | --- | --- |
63
+ | `foliokit` | Start the setup wizard. |
64
+ | `foliokit create` | Start the wizard with the explicit `create` command. |
65
+ | `foliokit --help` | Show CLI help. |
66
+ | `foliokit --version` | Print the installed version. |
223
67
 
224
68
  ---
225
69
 
226
- ## Images and Assets
70
+ ## πŸ“¦ Build and Deploy
227
71
 
228
- All static visual assets live inside the `public/` directory of your generated project:
72
+ Run the generated portfolio's checks and create a production build:
229
73
 
230
- ```text
231
- my-portfolio/
232
- └── public/
233
- β”œβ”€β”€ avatar-placeholder.svg
234
- β”œβ”€β”€ project-placeholder.svg
235
- β”œβ”€β”€ footer-heart.png
236
- β”œβ”€β”€ love-always-wins.png
237
- └── robots.txt
74
+ ```bash
75
+ npm test
76
+ npm run build
77
+ npm run preview
238
78
  ```
239
79
 
240
- ### How to Use Your Own Images:
80
+ Vite writes the static site to `dist/`. Deploy it to a static host such as **Vercel** or **Netlify** with build command `npm run build` and output directory `dist`.
241
81
 
242
- 1. Copy your image into the `public/` folder (e.g. `public/my-photo.jpg`).
243
- 2. In `data.ts`, reference the image with a leading slash:
244
- ```typescript
245
- profileImage: '/my-photo.jpg'
246
- ```
247
- 3. For project thumbnails, copy images to `public/` (recommended aspect ratio: `16:9` or `1200x675` px) and set `image: '/project-one.png'`.
248
- 4. **Supported Formats**: SVG, WebP, PNG, JPG/JPEG.
249
- 5. **Fallbacks**: If an image fails to load or is omitted, FolioKit automatically renders accessible fallback elements (e.g., initial-letter monogram badges for avatars).
82
+ For canonical URLs and sitemap generation, set `SITE_URL` in the hosting environment to your HTTPS origin, for example `https://portfolio.example` (no path or query string). You can also set `seo.siteUrl` in `data.ts`.
250
83
 
251
84
  ---
252
85
 
253
- ## Project Structure
86
+ ## 🧰 Stack and Project Files
254
87
 
255
- A portfolio generated by FolioKit has the following clean structure:
88
+ The generated site uses React, TypeScript, Vite, Lucide icons, and CSS. The CLI package uses Commander, Inquirer, Chalk, and Ora.
256
89
 
257
90
  ```text
258
91
  my-portfolio/
259
- β”œβ”€β”€ data.ts # Central content configuration (edit this!)
260
- β”œβ”€β”€ index.html # HTML entry point (title & metadata injected from data.ts)
261
- β”œβ”€β”€ package.json # Project scripts and dependencies
262
- β”œβ”€β”€ vite.config.ts # Vite configuration with automated metadata plugin
263
- β”œβ”€β”€ tsconfig.json # TypeScript configuration
264
- β”œβ”€β”€ public/ # Static assets (images, avatars, icons, robots.txt)
265
- β”‚ β”œβ”€β”€ avatar-placeholder.svg
266
- β”‚ └── project-placeholder.svg
267
- β”œβ”€β”€ scripts/
268
- β”‚ └── generate-seo.mjs # Production SEO, canonical URL, and sitemap generator
92
+ β”œβ”€β”€ data.ts # Edit your portfolio content
93
+ β”œβ”€β”€ types.ts # Shared TypeScript types
94
+ β”œβ”€β”€ public/ # Images and robots.txt
95
+ β”œβ”€β”€ scripts/generate-seo.mjs
96
+ β”œβ”€β”€ tests/portfolio.test.js
269
97
  └── src/
270
- β”œβ”€β”€ main.tsx # React application entry point
271
- β”œβ”€β”€ App.tsx # Main portfolio layout and section renderers
272
- β”œβ”€β”€ styles.css # Responsive styles and theme variables
273
- β”œβ”€β”€ utils.ts # Lightweight DOM helpers
274
- β”œβ”€β”€ BrandIcon.tsx # Vector brand logo helper with fallbacks
275
- β”œβ”€β”€ ProjectMagazineGallery.tsx # 3D interactive carousel
276
- └── ProjectMagazineGallery.css # 3D perspective & carousel styling
98
+ β”œβ”€β”€ App.tsx
99
+ β”œβ”€β”€ BrandIcon.tsx
100
+ β”œβ”€β”€ ProjectMagazineGallery.tsx
101
+ β”œβ”€β”€ ProjectMagazineGallery.css
102
+ β”œβ”€β”€ styles.css
103
+ └── main.tsx
277
104
  ```
278
105
 
279
106
  ---
280
107
 
281
- ## Tech Stack
282
-
283
- ### FolioKit CLI
284
- - **Runtime**: [Node.js](https://nodejs.org) (>= 22.12.0)
285
- - **CLI Framework**: [Commander.js](https://github.com/tj/commander.js)
286
- - **Interactive Prompts**: [Inquirer.js](https://github.com/SBoudrias/Inquirer.js)
287
- - **Terminal Styling**: [Chalk](https://github.com/chalk/chalk)
288
- - **Terminal Spinners**: [Ora](https://github.com/sindresorhus/ora)
289
-
290
- ### Generated Portfolio
291
- - **UI Framework**: [React 19](https://react.dev)
292
- - **Language**: [TypeScript](https://www.typescriptlang.org)
293
- - **Bundler & Dev Server**: [Vite 8](https://vitejs.dev)
294
- - **Icons**: [Lucide React](https://lucide.dev) & [Simple Icons](https://simpleicons.org)
295
- - **Styling**: Native Modern CSS (CSS Grid, Flexbox, CSS Variables, 3D Transforms)
296
-
297
- ---
298
-
299
- ## Troubleshooting
300
-
301
- ### 1. "Node.js version must be >=22.12.0"
302
- - **Cause**: An older Node.js runtime is active in your terminal.
303
- - **Solution**: Install or activate Node.js 22.12.0 or newer using [nvm](https://github.com/nvm-sh/nvm) or [fnm](https://github.com/Schniz/fnm):
304
- ```bash
305
- nvm install 22
306
- nvm use 22
307
- ```
308
-
309
- ### 2. Destination Folder Already Exists
310
- - **Cause**: A folder with the specified project name already exists in your current directory.
311
- - **Solution**: Choose a different name when prompted, or confirm the prompt to overwrite the existing folder.
312
-
313
- ### 3. Dependency Installation Failed
314
- - **Cause**: Network timeout or strict corporate proxy blocked `npm install`.
315
- - **Solution**: Your generated project files are safely preserved. Navigate into the folder and manually install dependencies:
316
- ```bash
317
- cd my-portfolio
318
- npm install
319
- ```
320
-
321
- ### 4. Development Port 5173 in Use
322
- - **Cause**: Another local development server is running on port 5173.
323
- - **Solution**: Vite automatically attempts the next available port (e.g. 5174). You can also specify a custom port:
324
- ```bash
325
- npm run dev -- --port 3000
326
- ```
327
-
328
- ### 5. TypeScript Error After Editing `data.ts`
329
- - **Cause**: A required field was removed or a type mismatch was introduced.
330
- - **Solution**: Check the terminal output or editor diagnostics. Run `npm test` inside the portfolio directory to validate your `data.ts` structure against the test suite.
331
-
332
- ---
333
-
334
- ## Contributing
335
-
336
- Contributions, issues, and feature requests are welcome!
337
-
338
- ### Development Workflow
339
-
340
- 1. Fork the repository on GitHub.
341
- 2. Clone your fork locally:
342
- ```bash
343
- git clone https://github.com/saurabhhdev/foliokit.git
344
- cd foliokit
345
- ```
346
- 3. Install dependencies:
347
- ```bash
348
- npm install
349
- ```
350
- 4. Run CLI and generator tests:
351
- ```bash
352
- npm test
353
- ```
354
- 5. Test the default template:
355
- ```bash
356
- cd templates/default
357
- npm test
358
- npm run build
359
- cd ../..
360
- ```
361
- 6. Create a feature branch (`git checkout -b feature/amazing-idea`), commit your changes, and submit a pull request.
362
-
363
- ---
364
-
365
- ## License
366
-
367
- Distributed under the **MIT License**. See [`LICENSE`](LICENSE) for complete details.
368
-
369
- Copyright (c) 2026 **Saurabh Pandey**.
370
-
371
- ---
108
+ ## πŸ™Œ Contributing and License
372
109
 
373
- ## Author & Links
110
+ For CLI development, run `npm install` and `npm test` at the repository root. To check the bundled website template, run `npm test` and `npm run build` inside `templates/default/`.
374
111
 
375
- - **Author**: Saurabh Pandey
376
- - **GitHub**: [@saurabhhdev](https://github.com/saurabhhdev)
377
- - **Repository**: [https://github.com/saurabhhdev/foliokit](https://github.com/saurabhhdev/foliokit)
378
- - **Issue Tracker**: [https://github.com/saurabhhdev/foliokit/issues](https://github.com/saurabhhdev/foliokit/issues)
112
+ FolioKit is open source under the [MIT License](LICENSE).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-foliokit",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Generate customizable React and TypeScript developer portfolios",
5
5
  "type": "module",
6
6
  "main": "./src/cli.js",