{"id":31801071,"url":"https://github.com/muhammadiqbalk/mypass","last_synced_at":"2026-05-04T11:33:53.596Z","repository":{"id":312889210,"uuid":"1049120846","full_name":"MuhammadIqbalK/mypass","owner":"MuhammadIqbalK","description":"👉 Secure \u0026 modern password manager | AES-256 encryption | Next.js + tRPC + DrizzleORM | Beautiful UI with Tailwind + shadcn/ui","archived":false,"fork":false,"pushed_at":"2025-09-02T15:30:15.000Z","size":91,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-02T17:29:26.229Z","etag":null,"topics":["drizzle-orm","encryption","nextjs15","password-manager","shadcn-ui","t3-stack","tailwindcss","trpc","typescript"],"latest_commit_sha":null,"homepage":"","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/MuhammadIqbalK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-02T14:12:40.000Z","updated_at":"2025-09-02T15:30:19.000Z","dependencies_parsed_at":"2025-09-02T17:29:28.623Z","dependency_job_id":"5c398a93-5fc3-497c-b699-59461408be53","html_url":"https://github.com/MuhammadIqbalK/mypass","commit_stats":null,"previous_names":["muhammadiqbalk/mypass"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MuhammadIqbalK/mypass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammadIqbalK%2Fmypass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammadIqbalK%2Fmypass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammadIqbalK%2Fmypass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammadIqbalK%2Fmypass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MuhammadIqbalK","download_url":"https://codeload.github.com/MuhammadIqbalK/mypass/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MuhammadIqbalK%2Fmypass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005552,"owners_count":26083918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["drizzle-orm","encryption","nextjs15","password-manager","shadcn-ui","t3-stack","tailwindcss","trpc","typescript"],"created_at":"2025-10-10T23:18:45.747Z","updated_at":"2025-10-10T23:18:47.396Z","avatar_url":"https://github.com/MuhammadIqbalK.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n                ███╗   ███╗██╗   ██╗██████╗  █████╗ ███████╗███████╗\n                ████╗ ████║╚██╗ ██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝\n                ██╔████╔██║ ╚████╔╝ ██████╔╝███████║███████╗███████╗\n                ██║╚██╔╝██║  ╚██╔╝  ██╔═══╝ ██╔══██║╚════██║╚════██║\n                ██║ ╚═╝ ██║   ██║   ██║     ██║  ██║███████║███████║\n                ╚═╝     ╚═╝   ╚═╝   ╚═╝     ╚═╝  ╚═╝╚══════╝╚══════╝\n                                                     \n```\n\n![MyPass Dashboard](https://i.imgur.com/LmCYBdr.png)\n\n# 🔐 MyPass - Secure Password Manager\n\nMyPass is a secure and intuitive password manager built with a modern full-stack TypeScript ecosystem. It allows you to securely store, manage, and generate strong passwords, with features like robust authentication, data visualization, and client-side encryption.\n\n---\n\n## 🌟 Features\n\n*   **🔒 Secure Authentication**: User registration, login, and logout with `httpOnly` session cookies.\n*   **🔑 Password Management**: Add, view (decrypted), edit, and delete passwords.\n*   **🎲 Password Generator**: Generate strong, random passwords.\n*   **📊 Data Visualization**: Dashboard charts showing password category distribution and strength analysis.\n*   **🛡️ Client-Side Encryption**: Passwords are encrypted using AES-256-GCM with a securely derived key (PBKDF2) before being stored.\n*   **_typeDefinition Type-Safe APIs**: End-to-end type safety between frontend and backend using tRPC.\n*   **🎨 Modern UI**: Built with Tailwind CSS and shadcn/ui components for a clean and responsive user experience.\n\n---\n\n## ⚙️ Tech Stack\n\n*   **_frontend Frontend**: Next.js 15 (App Router), React, TypeScript\n*   **🎨 Styling**: Tailwind CSS, shadcn/ui\n*   **backend Backend**: Next.js API Routes, tRPC, Node.js\n*   **🗃️ ORM**: DrizzleORM\n*   **💾 Database**: SQLite (local development), Turso (production-ready via `libsql`)\n*   **📈 Data Visualization**: Recharts\n*   **🔒 Encryption**: Node.js `crypto` module (AES-256-GCM, PBKDF2)\n\n---\n\n## 📋 Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n*   [Node.js](https://nodejs.org/en/) (v18.x or higher recommended)\n*   [npm](https://www.npmjs.com/) (comes with Node.js) or [pnpm](https://pnpm.io/) (recommended for monorepos)\n\n---\n\n## 🚀 Getting Started\n\nFollow these steps to set up and run the project locally:\n\n### 1️⃣ Clone the Repository\n\n```bash\ngit clone https://github.com/your-username/mypass.git # Replace with your actual repo URL\ncd mypass\n```\n\n### 2️⃣ Install Dependencies\n\nThis project uses npm workspaces. Install all dependencies from the project root:\n\n```bash\nnpm install\n# or pnpm install\n```\n\n### 3️⃣ Environment Variables\n\nCreate a `.env` file in the `apps/server` directory and add the following:\n\n```\n# apps/server/.env\nDATABASE_URL=\"file:./local.db\"\n# CORS_ORIGIN=\"http://localhost:3001\" # Uncomment and adjust if your frontend is on a different origin\n```\n*Note: `CORS_ORIGIN` is typically not needed for local development with the current proxy setup, but it's good practice to include it for clarity or if you change the setup.*\n\n### 4️⃣ Database Setup\n\nThis project uses SQLite with Drizzle ORM.\n\n1.  **Start the local SQLite database**:\n    ```bash\n    npm run db:local\n    ```\n    This command will start a local Turso development server and create a `local.db` file in `apps/server`.\n\n2.  **Apply the database schema**:\n    ```bash\n    npm run db:push\n    ```\n    This will push the Drizzle schema to your `local.db` database.\n\n### 5️⃣ Run the Development Servers\n\nStart both the web and server applications in development mode:\n\n```bash\nnpm run dev\n```\n\n### 6️⃣ Access the Application\n\nOpen your browser and navigate to:\n\n[http://localhost:3001](http://localhost:3001)\n\nYou should see the MyPass login page.\n\n---\n\n## 📁 Project Structure\n\n```\nmypass/\n├── apps/\n│   ├── web/         # Frontend application (Next.js, React, Tailwind, shadcn/ui)\n│   └── server/      # Backend API (Next.js API Routes, tRPC, DrizzleORM, SQLite)\n├── packages/        # (Optional: for shared utilities, not currently used extensively)\n```\n\n---\n\n## 📜 Available Scripts\n\n*   `npm install`: Install dependencies for all workspaces.\n*   `npm run dev`: Start both web and server applications in development mode.\n*   `npm run build`: Build all applications for production.\n*   `npm run check-types`: Check TypeScript types across all applications.\n*   `npm run dev:web`: Start only the web application (on port 3001).\n*   `npm run dev:server`: Start only the server application (on port 3000).\n*   `npm run db:push`: Apply schema changes to the database.\n*   `npm run db:studio`: Open Drizzle Studio UI for database inspection.\n*   `npm run db:generate`: Generate Drizzle migrations based on schema changes.\n*   `npm run db:migrate`: Run pending Drizzle migrations.\n*   `cd apps/server \u0026\u0026 npm run db:local`: Start the local SQLite database.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuhammadiqbalk%2Fmypass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuhammadiqbalk%2Fmypass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuhammadiqbalk%2Fmypass/lists"}