Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions Abhishek Gawande/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<div align="center">

# Abhishek Gawande
**Full Stack Developer** · Building things that shouldn't exist yet

[![Portfolio](https://img.shields.io/badge/Portfolio-000000?style=for-the-badge&logo=vercel&logoColor=white)](https://abhishek-gawande.vercel.app)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/abhishek-gawande-a944a2277/)
[![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/gawandeabhishek_)
[![Email](https://img.shields.io/badge/Email-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:abhishekgawande1667@gmail.com)
![Profile Views](https://komarev.com/ghpvc/?username=gawandeabhishek&color=F43F5E&style=for-the-badge&label=Profile+Views)

</div>

---

I don't build to follow trends. I build to fill gaps nobody else noticed yet.

From gesture-controlled music to encrypted watch-together streaming to rethinking how voting works on the web, every project starts with a problem I couldn't stop thinking about.

Right now pushing into **Machine Learning**, **App Development** and **Electronics** because the most interesting problems aren't purely digital anymore.

---

## Things I've Built

| Project | What it does |
|--------|-------------|
| [wanderlust-major-project](https://github.com/gawandeabhishek/Wanderlust-Major-Project) | MERN stack travel app — explore destinations, plan itineraries, manage trips. |
| [gesture-based-music-player](https://github.com/gawandeabhishek/gesture-based-music-player) | Control music with hand gestures. No keyboard, no clicks. |
| [snappaste](https://github.com/gawandeabhishek/snappaste) | Fast, frictionless snippet capturing and sharing. |
| [vibewave](https://github.com/gawandeabhishek/vibewave) | Music platform built for real-time engagement. |
| [telenova](https://github.com/gawandeabhishek/telenova) | End-to-end encrypted movie streaming with watch-together rooms. |
| [vote-siem](https://github.com/gawandeabhishek/vote-siem) | Secure, transparent voting for the modern web. |
| [TubePlus](https://github.com/gawandeabhishek/TubePlus) | Video platform experience done right. |

---

## Stack

![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?style=flat-square&logo=javascript&logoColor=black)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)
![React](https://img.shields.io/badge/React-61DAFB?style=flat-square&logo=react&logoColor=black)
![Next.js](https://img.shields.io/badge/Next.js-000000?style=flat-square&logo=nextdotjs&logoColor=white)
![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat-square&logo=nodedotjs&logoColor=white)
![MongoDB](https://img.shields.io/badge/MongoDB-47A248?style=flat-square&logo=mongodb&logoColor=white)
![Tailwind CSS](https://img.shields.io/badge/Tailwind-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white)
![Java](https://img.shields.io/badge/Java-ED8B00?style=flat-square&logo=openjdk&logoColor=white)
![Arduino](https://img.shields.io/badge/Arduino-00979D?style=flat-square&logo=arduino&logoColor=white)

---

## GitHub Stats

<div align="center">

[![Streak](https://streak-stats.demolab.com?user=gawandeabhishek&theme=tokyonight&hide_border=true&border_radius=12.6&short_numbers=true&mode=weekly)](https://git.io/streak-stats)

</div>

---

## 💖 Sponsor

If my work has been useful to you, consider supporting it — every contribution keeps the ideas alive!

[![Sponsor gawandeabhishek](https://img.shields.io/static/v1?label=Sponsor&message=gawandeabhishek&color=ea4aaa&logo=github-sponsors&style=for-the-badge&logoColor=white)](https://github.com/sponsors/gawandeabhishek)

---

<div align="center">
<img src="https://media1.tenor.com/m/CFyGnTjUqw4AAAAd/dinosaur.gif" width="100%" />
</div>
41 changes: 41 additions & 0 deletions Abhishek Gawande/snappaste/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
13 changes: 13 additions & 0 deletions Abhishek Gawande/snappaste/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Creative Commons Attribution-NonCommercial 4.0 International Public License

By using this software, you agree to the terms of the license.

You are free to:
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material

Under the following terms:
- Attribution — You must give appropriate credit.
- NonCommercial — You may not use the material for commercial purposes.

For full license text, see: https://creativecommons.org/licenses/by-nc/4.0/legalcode
109 changes: 109 additions & 0 deletions Abhishek Gawande/snappaste/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# SnapPaste

**Gesture-Controlled Copy‑Paste, Right from the Browser.**

SnapPaste is a browser-based platform that brings futuristic copy‑paste to life using hand gestures. Built with **Next.js**, **TensorFlow.js**, and **real-time hand pose detection**, it enables users to copy and paste content simply by waving their hand—no extensions, no installations.

---

## 💖 Sponsor

If you find SnapPaste useful, consider supporting its development!

[![Sponsor gawandeabhishek](https://img.shields.io/static/v1?label=Sponsor&message=gawandeabhishek&color=ea4aaa&logo=github-sponsors&style=for-the-badge&logoColor=white)](https://github.com/sponsors/gawandeabhishek)

---

## 🧠 How It Works

- Uses the **Handpose model** from TensorFlow.js to detect 21 key points on the hand from the webcam feed.
- Distinguishes between **“grab”** and **“open”** gestures by calculating distances between the palm and fingertips.
- Runs detection continuously via `requestAnimationFrame` for smooth, real-time gesture feedback.
- Everything is handled **client-side**, ensuring privacy and zero setup—just open the site and wave.

---

## ⚙️ Tech Stack

- **Framework:** Next.js (App Router)
- **AI:** TensorFlow.js, Handpose model
- **UI:** Tailwind CSS, ShadCN/UI, Framer Motion
- **Icons:** React Icons
- **Webcam Input:** Native browser webcam API

---

## 🚀 Getting Started

Clone and run locally:

```bash
git clone https://github.com/your-username/snappaste.git
cd snappaste
yarn install
yarn dev
````

Open [http://localhost:3000](http://localhost:3000) in your browser.

---

## ✨ Features

* **Real-Time Gesture Detection**
* **No Extensions or Downloads**
* **Client-Side Only for Privacy**
* **Cross-Browser Compatible**
* **Smooth UX with Framer Motion**

---

## 📁 Environment Variables

Create a `.env.local` file in the root of your project and define the following:

| Variable | Description |
| -------------------- | -------------------------------------------- |
| `DATABASE_URL` | Your database connection string |
| `AUTH_GOOGLE_ID` | Google OAuth Client ID (from Google Console) |
| `AUTH_GOOGLE_SECRET` | Google OAuth Client Secret |
| `AUTH_SECRET` | Random string for securing authentication |

Example `.env.local`:

```env
DATABASE_URL=postgresql://user:password@host:port/dbname
AUTH_GOOGLE_ID=your-google-client-id
AUTH_GOOGLE_SECRET=your-google-client-secret
AUTH_SECRET=your-random-secret
```

---

## 🌐 Live Demo

Try it here: [https://snappaste.vercel.app](https://snappaste.vercel.app)

---

## 🤝 Contributing

Contributions are welcome! To contribute:

1. Fork the repo.
2. Create a new branch: `git checkout -b feature/YourFeature`.
3. Commit and push: `git commit -m "Add your feature"` and `git push origin feature/YourFeature`.
4. Open a pull request.

---

## 🧠 Inspiration

The idea for SnapPaste came during a casual bus ride after seeing a reel showcasing Huawei’s air‑gesture demo. That evening, between 7–10 PM, the first prototype of the feature was built. The following night, from 7–9 PM, it was refined and completed. The result? **SnapPaste**—a gesture‑controlled copy‑paste platform.

---

## 📝 License

This project is licensed under the **Creative Commons Attribution-NonCommercial 4.0 International License**.
See the [LICENSE](./LICENSE) file for details.
21 changes: 21 additions & 0 deletions Abhishek Gawande/snappaste/components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "",
"css": "src/app/globals.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
}
21 changes: 21 additions & 0 deletions Abhishek Gawande/snappaste/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const compat = new FlatCompat({
baseDirectory: __dirname,
});

const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
{
rules: {
"@next/next/no-img-element": "off",
},
},
];

export default eslintConfig;
7 changes: 7 additions & 0 deletions Abhishek Gawande/snappaste/next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
/* config options here */
};

export default nextConfig;
Loading