+
+# Abhishek Gawande
+**Full Stack Developer** · Building things that shouldn't exist yet
+
+[](https://abhishek-gawande.vercel.app)
+[](https://www.linkedin.com/in/abhishek-gawande-a944a2277/)
+[](https://www.instagram.com/gawandeabhishek_)
+[](mailto:abhishekgawande1667@gmail.com)
+
+
+
+
+---
+
+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
+
+
+
+
+
+
+
+
+
+
+
+---
+
+## GitHub Stats
+
+
+
+---
+
+## 💖 Sponsor
+
+If my work has been useful to you, consider supporting it — every contribution keeps the ideas alive!
+
+[](https://github.com/sponsors/gawandeabhishek)
+
+---
+
+
+ "At SnapPaste, we’ve revolutionized the way teams share
+ code snippets. It’s like having a universal clipboard —
+ seamless, instant, and across all your devices."
+
+
+
+
+
+ AG
+
+
+
Abhishek Gawande
+
Software Engineer
+
+
+
+
+
+
10k+
+
Active Users
+
+
+
99.9%
+
Uptime
+
+
+
500ms
+
Avg Speed
+
+
+
+
+
+
+
+
+ );
+};
+
+export default SignInPage;
diff --git a/Abhishek Gawande/snappaste/src/components/code-or-text.tsx b/Abhishek Gawande/snappaste/src/components/code-or-text.tsx
new file mode 100644
index 00000000..4816eba2
--- /dev/null
+++ b/Abhishek Gawande/snappaste/src/components/code-or-text.tsx
@@ -0,0 +1,153 @@
+"use client";
+
+import { useRef, useEffect, useState } from "react";
+import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
+import { oneDark } from "react-syntax-highlighter/dist/esm/styles/prism";
+import { toast } from "sonner";
+
+interface CodeOrTextProps {
+ type: "code" | "text";
+ content?: string;
+ setContent: React.Dispatch>;
+ onChange?: (content: string) => void;
+ gestureSignal?: "copy" | "paste";
+ roomId: string;
+}
+
+export const CodeOrText = ({
+ type,
+ content = "",
+ onChange,
+ gestureSignal,
+ setContent,
+ roomId,
+}: CodeOrTextProps) => {
+ const editableRef = useRef(null);
+ const [isEditing, setIsEditing] = useState(false);
+
+ useEffect(() => {
+ if (editableRef.current && editableRef.current.innerText !== content) {
+ editableRef.current.innerText = content;
+ }
+ }, [content]);
+
+ useEffect(() => {
+ if (!gestureSignal) return;
+ if (gestureSignal === "copy") {
+ const text = editableRef.current?.innerText || "";
+ navigator.clipboard.writeText(text);
+ toast.success("Copied to clipboard ✨");
+ } else if (gestureSignal === "paste") {
+ (async () => {
+ try {
+ const res = await fetch(`/api/room/${roomId}/content`);
+ if (!res.ok) throw new Error("Room not found");
+
+ const data = await res.json();
+ const newText = data[type];
+
+ setContent(newText);
+ if (editableRef.current) {
+ editableRef.current.innerText = newText;
+ }
+ onChange?.(newText);
+
+ toast.success("Pasted from clipboard 🚀");
+ } catch (error) {
+ console.error("Paste failed:", error);
+ }
+ })();
+ }
+ }, [gestureSignal]);
+
+ const handleInput = async (e: React.FormEvent) => {
+ const content = e.currentTarget.innerText?.trim() || "";
+
+ if (!content) return;
+
+ try {
+ const res = await fetch("/api/update-user", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({
+ type,
+ ...(type === "code" ? { code: content } : { text: content }),
+ }),
+ });
+ const data = await res.json();
+ } catch (err) {
+ console.error("Failed to update user:", err);
+ }
+ };
+
+ const codePlaceholder = `function greetUser(name) {\n console.log(\`Hello, \${name}! Welcome to SnapPaste.\`);\n return \`Nice to meet you, \${name}!\`;\n}\n\nconst message = greetUser("Developer");\nconsole.log(message);`;
+
+ const textPlaceholder = `Welcome to SnapPaste!\n\nThis is a sample text that demonstrates how text content is displayed in our application. You can easily copy and share this content with your friends or colleagues.\n\nKey features:\n• Instant sharing across devices\n• Clean, readable formatting\n• One-click copy functionality\n• Secure and private sharing options\n\nStart sharing your content seamlessly!`;
+
+ const placeholder = type === "code" ? codePlaceholder : textPlaceholder;
+
+ return (
+