{"id":27867463,"url":"https://github.com/cptcr/next.js_portfolio","last_synced_at":"2026-02-11T14:03:41.383Z","repository":{"id":289022833,"uuid":"969870472","full_name":"cptcr/next.js_portfolio","owner":"cptcr","description":"My own portfolio built with next.js","archived":false,"fork":false,"pushed_at":"2025-09-03T04:17:59.000Z","size":1197,"stargazers_count":6,"open_issues_count":11,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T10:56:28.201Z","etag":null,"topics":["lucide-react","neondb","nextjs15-typescript","postgresql","react","shadcn-ui","typescript","website"],"latest_commit_sha":null,"homepage":"https://cptcr.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cptcr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-21T04:27:07.000Z","updated_at":"2025-09-11T21:31:38.000Z","dependencies_parsed_at":"2025-05-04T22:46:05.205Z","dependency_job_id":"a8479cd6-e2b5-4cef-8d98-f6fae3c68ff6","html_url":"https://github.com/cptcr/next.js_portfolio","commit_stats":null,"previous_names":["cptcr/next.js_portfolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cptcr/next.js_portfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptcr%2Fnext.js_portfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptcr%2Fnext.js_portfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptcr%2Fnext.js_portfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptcr%2Fnext.js_portfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cptcr","download_url":"https://codeload.github.com/cptcr/next.js_portfolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cptcr%2Fnext.js_portfolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29333925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T12:42:24.625Z","status":"ssl_error","status_checked_at":"2026-02-11T12:41:23.344Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lucide-react","neondb","nextjs15-typescript","postgresql","react","shadcn-ui","typescript","website"],"created_at":"2025-05-04T22:45:55.645Z","updated_at":"2026-02-11T14:03:41.377Z","avatar_url":"https://github.com/cptcr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Portfolio Website\n\nBuilt with Next 15, React 19 and much much love.\n\n---\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fcptcr%2Fnext.js_portfolio\u0026env=DISCORD_USER_ID,DISCORD_BOT_TOKEN,USE_LANYARD,EMAIL_HOST,EMAIL_AUTH_USERNAME,EMAIL_AUTH_PASSWORD,EMAIL_SECURE,ADMIN_USERNAME,ADMIN_PASSWORD,JWT_SECRET\u0026envDescription=Discord%20Bot%20Token%20(required)%2C%20GitHub%20API%20Key%20(optional)\u0026project-name=nextjs-portfolio\u0026repository-name=Next.js-Portfolio\u0026redirect-url=https%3A%2F%2Fcptcr.dev\u0026demo-title=Next.js%20Portfolio%20with%20Blog%20management\u0026demo-description=This%20is%20a%20Next.js%20Portfolio%20with%20a%20dedicated%20portal%20to%20create%20and%20manage%20blog%20posts.\u0026demo-url=https%3A%2F%2Fcptcr.dev) \n\n## 🚀 Features\n\n- **Modern UI**: Dark mode with clean typography and accent colors\n- **Responsive Design**: Optimized for mobile, tablet, and desktop\n- **Real-time Integrations**:\n  - GitHub activity, repositories, and contributions via API\n  - Availability status (based on Germany timezone)\n  - “Quote of the Day” from external API\n- **Interactive Experience**:\n  - Smooth page transitions with Framer Motion\n  - Expandable project cards\n  - Real-time form validation\n- **Performance Optimizations**:\n  - Server-side rendering with caching\n  - Optimized image loading\n- **Admin Dashboard**\n  - Edit and manage posts\n  - Create posts\n  - Get post analytics\n\n---\n\n## 🧱 Tech Stack\n\n### Frontend\n- [Next.js 15](https://nextjs.org/blog/next-15)\n- [React 19](https://react.dev/blog/2024/12/05/react-19)\n- [TypeScript 5](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-8.html)\n- [TailwindCSS 4.1](https://tailwindcss.com/)\n- [ShadCN UI 2](https://ui.shadcn.com/)\n- [Framer Motion](https://motion.dev/)\n\n### Backend\n- Next.js API Routes\n- GitHub API integration\n- Real-time data fetching\n\n---\n\n## 📄 Pages\n\n1. **Home** – Animated hero + featured projects  \n2. **About** – Skills and GitHub dashboard  \n3. **Projects** – Filterable showcase + activity feed  \n4. **Community** – OSS contributions + mentorships  \n5. **Blog** – Searchable, filterable articles  \n6. **Contact** – Live validation + availability indicator  \n7. **Admin** - Stats and post management\n\n---\n\n## 🛠️ Setup \u0026 Installation\n\n1. **Clone the repo**\n   ```bash\n   git clone https://github.com/cptcr/next.js_portfolio.git\n   cd next.js_portfolio\n   ```\n\n2. **Install dependencies**\n   ```bash\n   npm install # or yarn or pnpm\n   ```\n\n3. **Environment config**\n\n   Create a `.env.local` file:\n\n   ```env\n   GITHUB_TOKEN=\n\n   # Discord Integration\n   DISCORD_USER_ID=\n   DISCORD_BOT_TOKEN=\n   USE_LANYARD=false\n\n   # Email\n   EMAIL_HOST=smtp.mailgun.org\n   EMAIL_ADDRESS=\n   EMAIL_SMTP_PORT=587\n   EMAIL_AUTH_USERNAME=\n   EMAIL_AUTH_PASSWORD=\n   EMAIL_SECURE=\n\n   # Auth\n   ADMIN_USERNAME=cptcr\n   ADMIN_PASSWORD=\u003csecure-password\u003e\n   JWT_SECRET=\u003cgenerate-a-secure-random-string\u003e\n\n   # Vercel\n   # Run \"npm i -g -D vercel\"\n   # After installation run \"vercel init\"\n   # After init run \"vercel env pull\" (vercel will now create the required token, vercel may affect the env file so double check if everything is still here or create a backup file)\n   VERCEL_OIDC_TOKEN=\n   # In your deployed site on vercel,\n   # go to storage and search if vercel already created one, if not,\n   # click on add new, then enter /posts as directory and deploy it\n   # after that go into the blob settings and obtain the key\n   BLOB_READ_WRITE_TOKEN=\n\n   # Used for the blogs api\n   NEXT_PUBLIC_SITE_UTL=http://localhost:3000 # (Change if you use a domain)\n   ```\n\n4. **Start development server**\n   ```bash\n   npm run dev\n   ```\n\n5. **Open** `http://localhost:3000` in your browser\n\n---\n\n## 🌐 Deployment (Vercel)\n\n1. Connect your GitHub repo to [Vercel](https://vercel.com)\n2. Add environment variables in the Vercel dashboard\n3. Deploy instantly\n\n---\n\n## 📁 Project Structure\n\n```\ncptcr-website/\n├── app/            # App Router pages\n│   ├── api/        # API routes\n│   ├── blog/       # Blog system\n│   ├── contact/    # Contact page\n│   └── ...         # Other routes\n│\n├── components/     # Reusable components\n│   ├── ui/         # UI primitives\n│   ├── layout/     # Layout components\n│   └── [feature]/  # Page-specific components\n│\n├── lib/            # Utilities \u0026 types\n│   ├── api/        \n│   ├── utils/\n│   └── types/\n│\n├── public/         # Static assets\n├── tailwind.config.js\n└── next.config.js\n```\n\n---\n\n## 📝 License\n\nLicensed under the [MIT License](LICENSE).\n\n---\n\n## 👨‍💻 About the Developer\n\nBuilt by **Tony (cptcr)**, a 17-year-old backend developer based in Stuttgart, Germany, specializing in modern web stacks.\n\n- GitHub: [@cptcr](https://github.com/cptcr)  \n- Twitter: [@cptcr](https://twitter.com/cptcrr) ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcptcr%2Fnext.js_portfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcptcr%2Fnext.js_portfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcptcr%2Fnext.js_portfolio/lists"}