{"_id":"@aimloul/portfolio-gen","_rev":"4-b0850ad5320473b046d0eff840760c16","name":"@aimloul/portfolio-gen","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@aimloul/portfolio-gen","version":"0.0.1","_id":"@aimloul/portfolio-gen@0.0.1","maintainers":[{"name":"aimloul","email":"anas.imloul27@gmail.com"}],"dist":{"shasum":"20a7d4c1004ecfac6b3598599c151fd0d27467a2","tarball":"https://registry.npmjs.org/@aimloul/portfolio-gen/-/portfolio-gen-0.0.1.tgz","fileCount":97,"integrity":"sha512-cLLlC1ezLM5DzMkK6MbTcjONksqgJAPZUvyCIvu/4dhluMmXL1UsaDyFxT7Up0aucm2rc5SFNW5U8U45F5DIEg==","signatures":[{"sig":"MEUCIQCAKLH4+5tuISZqHPnlxUy8HMamii8i2MgU/xG+3uaE/wIgHMZKsc0bjKeMX4QNh6nOGQYcOGKt7tqiB0h+7D3JsJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1855397},"gitHead":"11d4554e0df68e6cdbe5ce057fcd8d4dc793164b","scripts":{"ng":"ng","test":"ng test","build":"node scripts/build-blog-index.mjs && ng build","start":"node scripts/build-blog-index.mjs && ng serve -o","watch":"ng build --watch --configuration development","prebuild":"node scripts/build-blog-index.mjs"},"_npmUser":{"name":"aimloul","email":"anas.imloul27@gmail.com"},"prettier":{"overrides":[{"files":"*.html","options":{"parser":"angular"}}],"printWidth":100,"singleQuote":true},"_npmVersion":"10.8.1","description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.1.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"clsx":"^2.1.1","rxjs":"~7.8.0","tslib":"^2.3.0","marked":"^15.0.12","prismjs":"^1.30.0","zone.js":"~0.15.0","@angular/cdk":"^20.2.1","highlight.js":"^11.11.1","ngx-markdown":"^20.0.0","simple-icons":"^15.12.0","@angular/core":"^20.2.0","@angular/forms":"^20.2.0","@coreui/coreui":"~5.4.2","@popperjs/core":"~2.11.8","lucide-angular":"^0.542.0","tailwind-merge":"^3.3.1","@angular/common":"^20.2.0","@angular/router":"^20.2.0","@coreui/angular":"~5.5.11","@angular/compiler":"^20.2.0","@angular/material":"^20.2.1","@angular/animations":"^20.2.3","github-markdown-css":"^5.8.1","@coreui/icons-angular":"~5.5.11","@tailwindcss/typography":"^0.5.16","class-variance-authority":"^0.7.1","@angular/platform-browser":"^20.2.0"},"_hasShrinkwrap":false,"devDependencies":{"karma":"~6.4.0","postcss":"^8.5.6","typescript":"~5.9.2","tailwindcss":"^3.4.17","@angular/cli":"^20.2.1","autoprefixer":"^10.4.21","jasmine-core":"~5.9.0","karma-jasmine":"~5.1.0","@angular/build":"^20.2.1","@types/jasmine":"~5.1.0","karma-coverage":"~2.2.0","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.12","@angular/compiler-cli":"^20.2.0","karma-chrome-launcher":"~3.2.0","karma-jasmine-html-reporter":"~2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/portfolio-gen_0.0.1_1757029584284_0.21780859424411858","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@aimloul/portfolio-gen","version":"0.0.2","_id":"@aimloul/portfolio-gen@0.0.2","maintainers":[{"name":"aimloul","email":"anas.imloul27@gmail.com"}],"dist":{"shasum":"d3d4d29563386f149d41019e763596936894153c","tarball":"https://registry.npmjs.org/@aimloul/portfolio-gen/-/portfolio-gen-0.0.2.tgz","fileCount":98,"integrity":"sha512-m7bgWypVJGojBcZLtoHXiPEK+A8H2Iwv8sC7xK4PepTfPo3ndYH5DnWWV/DNa3zuknUbvrturaXJMugxwUAA6w==","signatures":[{"sig":"MEUCIHUUrAZWjjFFf4QzJ2ytQ4KlxuIX4om5+Y7TaAp+6PE3AiEAwR1c/ca062NMWBmXcijUZz6Z6JU7eJNQOK4WBGso0lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3549062},"gitHead":"11d4554e0df68e6cdbe5ce057fcd8d4dc793164b","scripts":{"ng":"ng","test":"ng test","build":"node scripts/build-blog-index.mjs && ng build","start":"node scripts/build-blog-index.mjs && ng serve -o","watch":"ng build --watch --configuration development","prebuild":"node scripts/build-blog-index.mjs"},"_npmUser":{"name":"aimloul","email":"anas.imloul27@gmail.com"},"prettier":{"overrides":[{"files":"*.html","options":{"parser":"angular"}}],"printWidth":100,"singleQuote":true},"_npmVersion":"10.8.1","description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.1.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"clsx":"^2.1.1","rxjs":"~7.8.0","tslib":"^2.3.0","marked":"^15.0.12","prismjs":"^1.30.0","zone.js":"~0.15.0","@angular/cdk":"^20.2.1","highlight.js":"^11.11.1","ngx-markdown":"^20.0.0","simple-icons":"^15.12.0","@angular/core":"^20.2.0","@angular/forms":"^20.2.0","@coreui/coreui":"~5.4.2","@popperjs/core":"~2.11.8","lucide-angular":"^0.542.0","tailwind-merge":"^3.3.1","@angular/common":"^20.2.0","@angular/router":"^20.2.0","@coreui/angular":"~5.5.11","@angular/compiler":"^20.2.0","@angular/material":"^20.2.1","@angular/animations":"^20.2.3","github-markdown-css":"^5.8.1","@coreui/icons-angular":"~5.5.11","@tailwindcss/typography":"^0.5.16","class-variance-authority":"^0.7.1","@angular/platform-browser":"^20.2.0"},"_hasShrinkwrap":false,"devDependencies":{"karma":"~6.4.0","postcss":"^8.5.6","typescript":"~5.9.2","tailwindcss":"^3.4.17","@angular/cli":"^20.2.1","autoprefixer":"^10.4.21","jasmine-core":"~5.9.0","karma-jasmine":"~5.1.0","@angular/build":"^20.2.1","@types/jasmine":"~5.1.0","karma-coverage":"~2.2.0","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.12","@angular/compiler-cli":"^20.2.0","karma-chrome-launcher":"~3.2.0","karma-jasmine-html-reporter":"~2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/portfolio-gen_0.0.2_1757029647289_0.4685867949131155","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@aimloul/portfolio-gen","version":"0.0.3","_id":"@aimloul/portfolio-gen@0.0.3","maintainers":[{"name":"aimloul","email":"anas.imloul27@gmail.com"}],"dist":{"shasum":"ce1422f490f7a7356d3b24da724a57e776a798eb","tarball":"https://registry.npmjs.org/@aimloul/portfolio-gen/-/portfolio-gen-0.0.3.tgz","fileCount":5,"integrity":"sha512-oeiOgk0Bv/56MCCBFJ7bjMIjeOV+pXDcMUSW8oo6SSDe05w9fAllzo9kf1Mclj02jQAaEfOp8/l0PLIq4R+b+Q==","signatures":[{"sig":"MEQCIBwmFWZamsNdAnn3x4MyXiHmB/BaPyan4v7TEgYEAG32AiAHjk/65Gpq4bypyy5ryK1O4FP1dCImXGXUijoWES632g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4474},"module":"fesm2022/aimloul-portfolio-gen.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/aimloul-portfolio-gen.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"11d4554e0df68e6cdbe5ce057fcd8d4dc793164b","typings":"index.d.ts","_npmUser":{"name":"aimloul","email":"anas.imloul27@gmail.com"},"_npmVersion":"10.8.2","description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.0.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.2.0","@angular/common":"^20.2.0"},"_npmOperationalInternal":{"tmp":"tmp/portfolio-gen_0.0.3_1757169000926_0.3129284558697225","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@aimloul/portfolio-gen","version":"0.0.4","scripts":{"ng":"ng","start":"node scripts/build-blog-index.mjs && ng serve -o","build":"node scripts/build-blog-index.mjs && ng build","watch":"ng build --watch --configuration development","test":"ng test","prebuild":"node scripts/build-blog-index.mjs"},"prettier":{"printWidth":100,"singleQuote":true,"overrides":[{"files":"*.html","options":{"parser":"angular"}}]},"dependencies":{"@angular/animations":"^20.2.3","@angular/cdk":"^20.2.1","@angular/common":"^20.2.0","@angular/compiler":"^20.2.0","@angular/core":"^20.2.0","@angular/forms":"^20.2.0","@angular/material":"^20.2.1","@angular/platform-browser":"^20.2.0","@angular/router":"^20.2.0","@coreui/angular":"~5.5.11","@coreui/coreui":"~5.4.2","@coreui/icons-angular":"~5.5.11","@popperjs/core":"~2.11.8","@tailwindcss/typography":"^0.5.16","class-variance-authority":"^0.7.1","clsx":"^2.1.1","github-markdown-css":"^5.8.1","highlight.js":"^11.11.1","lucide-angular":"^0.542.0","marked":"^15.0.12","ngx-markdown":"^20.0.0","prismjs":"^1.30.0","rxjs":"~7.8.0","simple-icons":"^15.12.0","tailwind-merge":"^3.3.1","tslib":"^2.3.0","zone.js":"~0.15.0"},"devDependencies":{"@angular/build":"^20.2.1","@angular/cli":"^20.2.1","@angular/compiler-cli":"^20.2.0","@tailwindcss/postcss":"^4.1.12","@types/jasmine":"~5.1.0","autoprefixer":"^10.4.21","jasmine-core":"~5.9.0","karma":"~6.4.0","karma-chrome-launcher":"~3.2.0","karma-coverage":"~2.2.0","karma-jasmine":"~5.1.0","karma-jasmine-html-reporter":"~2.1.0","ng-packagr":"^20.2.0","postcss":"^8.5.6","tailwindcss":"^3.4.17","tailwindcss-animate":"^1.0.7","typescript":"~5.9.2"},"_id":"@aimloul/portfolio-gen@0.0.4","gitHead":"11d4554e0df68e6cdbe5ce057fcd8d4dc793164b","description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.1.","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-GrF9NRnBIryqv9zwFDH0pkFPH7G60j3T4vefY8Qkp/K4Pr+F8CcZwcTwzsad6T9x9Plm3Me4WvSx/1y+m5TbyA==","shasum":"63fe19cf352781919a699a681596ddb8e3476d84","tarball":"https://registry.npmjs.org/@aimloul/portfolio-gen/-/portfolio-gen-0.0.4.tgz","fileCount":101,"unpackedSize":1850975,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFThHXJU/CczcqYW6WG2K5G+BwNp8TyicYJvXKhGRQmzAiBgiVKvsR8uT1C/teBzWM5+DeUXdIiF7htM2lW9dRXrOQ=="}]},"_npmUser":{"name":"aimloul","email":"anas.imloul27@gmail.com"},"directories":{},"maintainers":[{"name":"aimloul","email":"anas.imloul27@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/portfolio-gen_0.0.4_1757171245790_0.9466347278414051"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-04T23:46:24.170Z","modified":"2025-09-06T15:07:26.240Z","0.0.1":"2025-09-04T23:46:24.549Z","0.0.2":"2025-09-04T23:47:27.588Z","0.0.3":"2025-09-06T14:30:01.119Z","0.0.4":"2025-09-06T15:07:26.045Z"},"description":"This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.1.","maintainers":[{"name":"aimloul","email":"anas.imloul27@gmail.com"}],"readme":"# Portfolio-gen\n\nThis project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.1.\n\n## Development server\n\nTo start a local development server, run:\n\n```\nnpm run start\n```\n\nOnce the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files.\n\n## Building\n\nTo build the project run:\n\n```\nnpm run build\n```\n\nThis will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed.\n\n## Contact Form (Formspree Integration)\n\nThis project uses [Formspree](https://formspree.io/) for handling email submissions.  \nThe endpoint is configured in the file:\n\n```\nsrc/app/constants/contact.constants.ts\n```\n\nLook for the variable:\n\n```\nexport const FORMSPREE_URL = 'your-formspree-endpoint-here';\n```\n\n## Constants and Page Data\n\nEach page’s related static data is stored in the `src/app/constants/` directory.  \nFile naming follows a convention where the **page name** is the prefix. For example:\n\n- **About page** → `about.constants.ts`\n- **Projects page** → `projects.constants.ts`\n- **Contact page** → `contact.constants.ts`\n- **Home page** → `home.constants.ts`\n- **Header** → `header.constants.ts`\n\nThis ensures all page-specific content and metadata is centralized in one place, making updates easy and consistent.\n\n## Blogs\n\nBlog articles can be added easily by creating a new file in:\n\n```\npublic/data/blogs/\n```\n\nEach blog post is written in Markdown (`.md`) format. Once a new file is added here, it will automatically be picked up by the blog index and displayed on the site.\n\nFor example:\n\n```\npublic/data/blogs/my-new-article.md\n```\n","readmeFilename":"README.md"}