<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Amit Kumar Sharma</title>
    <description>The latest articles on DEV Community by Amit Kumar Sharma (@amitksh).</description>
    <link>https://dev.to/amitksh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F918384%2Fad584584-b9ea-44de-acdd-375d6aca77ff.jpg</url>
      <title>DEV Community: Amit Kumar Sharma</title>
      <link>https://dev.to/amitksh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amitksh"/>
    <language>en</language>
    <item>
      <title>Veyd: one place to research, learn, and build across domains</title>
      <dc:creator>Amit Kumar Sharma</dc:creator>
      <pubDate>Sat, 03 Oct 2026 20:52:21 +0000</pubDate>
      <link>https://dev.to/amitksh/veyd-one-place-to-research-learn-and-build-across-domains-2d2b</link>
      <guid>https://dev.to/amitksh/veyd-one-place-to-research-learn-and-build-across-domains-2d2b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge, Path Two: Vibe-Code Something Strange&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Veyd is a project workspace for researching documents with a clear path back to the source. Add a PDF, review AI-extracted entries in Sanity Studio, then ask cited questions or read an automatically drafted project handbook. Food and civil projects keep their documents, conversations, books and MCP access separate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I built it
&lt;/h3&gt;

&lt;p&gt;I wanted a central knowledge base for learning any domain &amp;amp; its standards. I build software across different fields, and each new project means researching a domain whose useful information is scattered across repositories and source documents. Veyd gives me one place to collect sources, research and learn from them, and return to the material through a project handbook. I can also share that project knowledge with compatible AI agents through MCP, so they work from the same context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project workspaces:&lt;/strong&gt; keep documents, conversations, handbooks and MCP credentials separate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF to reviewed knowledge:&lt;/strong&gt; upload a PDF, inspect AI-extracted drafts against the original in Sanity Studio, then publish verified entries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research chat:&lt;/strong&gt; ask questions against published project knowledge, with citations; use labeled external research when needed. Attach a PDF or confirm import of a research-discovered PDF card from chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable handbook:&lt;/strong&gt; generate a cited, indexed project book; resume reading and download PDF or offline HTML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History and control:&lt;/strong&gt; reopen previous chats, offer read-only project knowledge to compatible MCP clients, and remove a document from active context while retaining historical citation origins.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture at a glance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://veyd-seven.vercel.app/presentation/architecture.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjjrdtj0nkq49uykfudor.png" alt="Veyd architecture: the app connects to Sanity's PDF assets, structured entries and Studio review; published GROQ reads power chat, handbook and MCP. Supporting services are Gemini, Firecrawl, PostgreSQL, private Blob and Upstash." width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sanity holds the source knowledge and review workflow. PostgreSQL + Prisma keep accounts, projects, chats, handbook snapshots and MCP credentials. Gemini writes drafts and answers; Firecrawl discovers sources and parses public PDFs. Private Vercel Blob provides temporary upload storage.&lt;/p&gt;

&lt;p&gt;Upstash Redis handles rate limits and the handbook generation lock. The key boundary is that extraction creates &lt;strong&gt;drafts&lt;/strong&gt;; only human-reviewed, published Sanity entries become reusable project knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://veyd-seven.vercel.app/" rel="noopener noreferrer"&gt;veyd-seven.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public presentation:&lt;/strong&gt; &lt;a href="https://veyd-seven.vercel.app/presentation" rel="noopener noreferrer"&gt;Veyd presentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sanity app:&lt;/strong&gt; &lt;a href="https://sanity-zeta-six.vercel.app/" rel="noopener noreferrer"&gt;Veyd Sanity Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App screenshots:&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhvig8awlb7simyk1zz9n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhvig8awlb7simyk1zz9n.png" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3i77rtm9xkb9g9n26ma7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3i77rtm9xkb9g9n26ma7.png" alt="Veyd Chat UI" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fciixllp3ld84c6w4ixdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fciixllp3ld84c6w4ixdg.png" alt="Veyd Handbook page" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Demo account access:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Email: amit.veyd@yopmail.com 
Password: Pass@12345
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/amit-ksh/veyd" rel="noopener noreferrer"&gt;Veyd repository&lt;/a&gt; — Next.js app, Sanity Studio, schemas and milestone documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Build Process
&lt;/h2&gt;

&lt;p&gt;I used Codex to break the app into small implementation milestones and verify each feature against its source and review boundaries. I also used Google Antigravity during implementation. The prompts evolved from project-scoped Food/Civil research to an automatically drafted, cited handbook and confirmed PDF import from chat. I kept the AI output as drafts until someone checks and publishes it in Studio.&lt;/p&gt;

&lt;p&gt;Two corrections shaped the build. A private Vercel Blob store rejected a public upload request, so the upload flow was aligned with private storage. A public FDA PDF link did not provide usable bytes through a direct download, so research PDF ingestion now uses Firecrawl retrieval and PDF parsing, with file and page validation before extraction. Those failures changed the implementation rather than becoming success claims in the demo.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Sanity
&lt;/h2&gt;

&lt;p&gt;Sanity is Veyd's source-and-review layer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Content Lake + assets:&lt;/strong&gt; store each original PDF with a project-scoped &lt;code&gt;complianceDocument&lt;/code&gt;, and extracted &lt;code&gt;complianceRule&lt;/code&gt; drafts that reference the document, source pages and evidence excerpts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Studio:&lt;/strong&gt; group source documents, rules awaiting review and published rules so a person can check and correct a draft before publishing it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GROQ:&lt;/strong&gt; read only published, project-matched entries for cited chat, handbook generation and Veyd's custom read-only MCP endpoint.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Gemini handles extraction, answer writing and handbook drafting; Firecrawl handles external discovery and public PDF parsing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sanity features used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content Lake and file assets:&lt;/strong&gt; durable source PDFs and structured, source-linked knowledge entries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schemas, references and validation:&lt;/strong&gt; typed content, linked documents, source pages, evidence excerpts and required review metadata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Studio Structure Tool and document actions:&lt;/strong&gt; source/status lists, an awaiting-review queue, freshness views and human editing/publishing. &lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/sanity.config.ts" rel="noopener noreferrer"&gt;Studio configuration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mutation API and atomic transactions:&lt;/strong&gt; create a batch of unpublished rule drafts together, patch processing results, and remove linked content through bounded transactions. &lt;a href="https://github.com/amit-ksh/veyd/blob/main/src/lib/ingestion/service.ts#L248" rel="noopener noreferrer"&gt;Ingestion implementation&lt;/a&gt;, &lt;a href="https://github.com/amit-ksh/veyd/blob/main/src/lib/tombstones/remover.ts#L263" rel="noopener noreferrer"&gt;removal implementation&lt;/a&gt;. These use &lt;a href="https://www.sanity.io/docs/apis-and-sdks/js-client-transactions" rel="noopener noreferrer"&gt;SDK mutation transactions&lt;/a&gt;, not direct Actions API calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GROQ queries and ranked search:&lt;/strong&gt; project filters, keyword/citation scoring and reference expansion retrieve relevant entries with their source PDFs. &lt;a href="https://github.com/amit-ksh/veyd/blob/main/src/lib/sanity/published-queries.ts" rel="noopener noreferrer"&gt;Published queries&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Published perspective and API CDN:&lt;/strong&gt; server-side readers exclude drafts and use the CDN in production; the separate write client bypasses the CDN. &lt;a href="https://github.com/amit-ksh/veyd/blob/main/src/lib/sanity/clients.ts" rel="noopener noreferrer"&gt;Client configuration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vision plugin:&lt;/strong&gt; enabled in Studio for inspecting and trying GROQ queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sanity schema structure
&lt;/h3&gt;

&lt;p&gt;All six custom document types registered in &lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/index.ts" rel="noopener noreferrer"&gt;the schema index&lt;/a&gt; are listed below. The active knowledge model keeps each entry connected to its original source:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;complianceRule.sourceDocument&lt;/code&gt; → &lt;code&gt;complianceDocument.fileAsset&lt;/code&gt; → Sanity PDF asset.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Schema&lt;/th&gt;
&lt;th&gt;Purpose and current use&lt;/th&gt;
&lt;th&gt;Fields&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/complianceDocument.ts" rel="noopener noreferrer"&gt;&lt;code&gt;complianceDocument&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Active source PDF and extraction record.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;projectId&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;fileAsset&lt;/code&gt;, &lt;code&gt;industry&lt;/code&gt;, &lt;code&gt;originalFileName&lt;/code&gt;, &lt;code&gt;mimeType&lt;/code&gt;, &lt;code&gt;fileSizeBytes&lt;/code&gt;, &lt;code&gt;pageCount&lt;/code&gt;, &lt;code&gt;processingStatus&lt;/code&gt;, &lt;code&gt;extractionModel&lt;/code&gt;, &lt;code&gt;extractedRuleCount&lt;/code&gt;, &lt;code&gt;uploadedAt&lt;/code&gt;, &lt;code&gt;extractionCompletedAt&lt;/code&gt;, &lt;code&gt;failureMessage&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/complianceRule.ts" rel="noopener noreferrer"&gt;&lt;code&gt;complianceRule&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Active, source-linked entry drafted by AI and reviewed in Studio.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;projectId&lt;/code&gt;, &lt;code&gt;ruleName&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;requirement&lt;/code&gt;, &lt;code&gt;applicability&lt;/code&gt;, &lt;code&gt;jurisdiction&lt;/code&gt;, &lt;code&gt;regulator&lt;/code&gt;, &lt;code&gt;citation&lt;/code&gt;, &lt;code&gt;effectiveDate&lt;/code&gt;, &lt;code&gt;expiresAt&lt;/code&gt;, &lt;code&gt;sourceDocument&lt;/code&gt;, &lt;code&gt;sourcePages&lt;/code&gt;, &lt;code&gt;evidenceExcerpt&lt;/code&gt;, &lt;code&gt;industry&lt;/code&gt;, &lt;code&gt;keywords&lt;/code&gt;, &lt;code&gt;freshnessStatus&lt;/code&gt;, &lt;code&gt;lastReviewedAt&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/conversation.ts" rel="noopener noreferrer"&gt;&lt;code&gt;conversation&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Earlier Sanity chat-session model; still registered, but current chats use PostgreSQL.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;createdAt&lt;/code&gt;, &lt;code&gt;updatedAt&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/message.ts" rel="noopener noreferrer"&gt;&lt;code&gt;message&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Earlier Sanity message model, linked to a conversation; current messages use PostgreSQL.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;conversation&lt;/code&gt;, &lt;code&gt;role&lt;/code&gt;, &lt;code&gt;content&lt;/code&gt;, &lt;code&gt;clientMessageId&lt;/code&gt;, &lt;code&gt;citations&lt;/code&gt;, &lt;code&gt;createdAt&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/industry.ts" rel="noopener noreferrer"&gt;&lt;code&gt;industry&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Deprecated domain/category model retained for migration safety.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;slug&lt;/code&gt;, &lt;code&gt;icon&lt;/code&gt;, &lt;code&gt;summary&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/amit-ksh/veyd/blob/main/sanity/schemaTypes/chapter.ts" rel="noopener noreferrer"&gt;&lt;code&gt;chapter&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Deprecated authored handbook model; current generated handbook snapshots use PostgreSQL.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;slug&lt;/code&gt;, &lt;code&gt;industry&lt;/code&gt;, &lt;code&gt;order&lt;/code&gt;, &lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;estimatedMinutes&lt;/code&gt;, &lt;code&gt;body&lt;/code&gt;, &lt;code&gt;rules&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Embedded object:&lt;/strong&gt; &lt;code&gt;message.citations[]&lt;/code&gt; contains &lt;code&gt;citationItem&lt;/code&gt; objects with &lt;code&gt;sourceKind&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;ruleId&lt;/code&gt;, &lt;code&gt;documentId&lt;/code&gt; and &lt;code&gt;citation&lt;/code&gt;. Source kinds distinguish Sanity, official web and secondary web evidence. This is a nested object, not a seventh document type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other relationships:&lt;/strong&gt; &lt;code&gt;message.conversation&lt;/code&gt; references &lt;code&gt;conversation&lt;/code&gt;; legacy &lt;code&gt;chapter.industry&lt;/code&gt; references &lt;code&gt;industry&lt;/code&gt;, and &lt;code&gt;chapter.rules[]&lt;/code&gt; references &lt;code&gt;complianceRule&lt;/code&gt;. Chapter &lt;code&gt;body&lt;/code&gt; contains Portable Text blocks and images. PDF and image files use Sanity's built-in asset types rather than additional custom schemas. Standard Sanity system fields such as &lt;code&gt;_id&lt;/code&gt; and &lt;code&gt;_type&lt;/code&gt; are omitted from the field inventory.&lt;/p&gt;

&lt;p&gt;Studio requires a human review timestamp before publication. Project-matched, published GROQ reads exclude drafts; the app also excludes removed documents. Projects are PostgreSQL records, linked through &lt;code&gt;projectId&lt;/code&gt;, not Sanity project documents. The active document/rule &lt;code&gt;industry&lt;/code&gt; fields are strings, not references to the legacy &lt;code&gt;industry&lt;/code&gt; schema; the current upload flow derives that value from the project name. The &lt;a href="https://github.com/amit-ksh/veyd/tree/main/sanity/schemaTypes" rel="noopener noreferrer"&gt;schema definitions&lt;/a&gt; remain the source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity Project Details
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sanity project ID:&lt;/strong&gt; &lt;code&gt;erhznx84&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent Session
&lt;/h2&gt;

&lt;p&gt;Curated highlights from my implementation conversation, edited for clarity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I started with a central knowledge base: research a domain, learn from its sources, revisit a handbook, and share the same context with agents.&lt;/li&gt;
&lt;li&gt;I asked Codex to turn the scope into feature milestones and reusable repository skills, keeping project isolation and human review explicit.&lt;/li&gt;
&lt;li&gt;We built cited research, stored handbooks and confirmed PDF import from chat. Private uploads and failing public PDF downloads led to storage fixes and Firecrawl parsing.&lt;/li&gt;
&lt;li&gt;I refined the UI into a minimal reader and presentation, then asked for type/build checks and manual browser verification.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>sanitychallenge</category>
      <category>sanity</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building an Awwwards-Level Portfolio in Hours Using Google's Antigravity AI</title>
      <dc:creator>Amit Kumar Sharma</dc:creator>
      <pubDate>Mon, 26 Jan 2026 19:48:38 +0000</pubDate>
      <link>https://dev.to/amitksh/building-an-awwwards-level-portfolio-in-hours-using-googles-antigravity-ai-534n</link>
      <guid>https://dev.to/amitksh/building-an-awwwards-level-portfolio-in-hours-using-googles-antigravity-ai-534n</guid>
      <description>&lt;h1&gt;
  
  
  New Year, New You Portfolio Challenge
&lt;/h1&gt;

&lt;p&gt;--labels dev-tutorial=devnewyear2026&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29cm4l8kqior1p4eoxy6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29cm4l8kqior1p4eoxy6.png" alt=" " width="799" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hi, I'm &lt;strong&gt;Amit Sharma&lt;/strong&gt;, a full-stack developer and creative thinker who loves building digital products that look as good as they work.&lt;/p&gt;

&lt;p&gt;I'm currently working as a Software Development Engineer at 9AI, where I lead frontend development and focus on creating intuitive user experiences. My passion lies in bridging the gap between design and  crafting a pixel-perfect UI&lt;/p&gt;

&lt;p&gt;With this portfolio, I hope to express my identity not just as a coder, but as a creator who values aesthetics, performance, and attention to detail. I wanted a space that feels personal, dynamic, and "premium" to showcase my journey and the projects I'm proud of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://amit-portfolio-2026-927229468543.europe-west1.run.app/" rel="noopener noreferrer"&gt;Portfolio link&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe width="100%" height="600px" src="https://amit-portfolio-2026-927229468543.europe-west1.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Building this portfolio was an exercise in modern web development and "agentic" coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework&lt;/strong&gt;: Next.js 14&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Styling&lt;/strong&gt;: TailwindCSS, React Three Fibre &amp;amp; Framer Motion for animations&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Email Service&lt;/strong&gt;: Resend&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Deployment&lt;/strong&gt;: Google Cloud Run&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Assistance&lt;/strong&gt;: AntiGravity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Design Decisions
&lt;/h3&gt;

&lt;p&gt;I focused heavily on &lt;strong&gt;micro-interactions&lt;/strong&gt; and &lt;strong&gt;smooth transitions&lt;/strong&gt;. The goal was to make the site feel "alive" and give it an Awwwards-winning website feel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Typography&lt;/strong&gt;: Used clean, modern sans-serif fonts to maintain a professional yet fresh look.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Component-Based Architecture&lt;/strong&gt;: Everything is modular. Data is separated into a &lt;code&gt;content.ts&lt;/code&gt; file, making it easy to update the portfolio without touching the UI code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Google AI Tools
&lt;/h3&gt;

&lt;p&gt;I utilized Antigravity to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Project Planning&lt;/strong&gt;: Used &lt;strong&gt;gemini&lt;/strong&gt; to create the entire plan for the website including the design system from scratch, using only one image for the website's aesthetic.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Iterate on Design&lt;/strong&gt;: Rapidly prototyped components like the "Selected Work" section, fine-tuned spacing/colors, and created a clean UI by giving the reference images.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Deploy&lt;/strong&gt;: Generated the necessary &lt;code&gt;Dockerfile&lt;/code&gt; and &lt;code&gt;cloudbuild.yaml&lt;/code&gt; configurations to deploy seamlessly to Cloud Run.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Time Efficiency&lt;/strong&gt;: I wanted to create a new portfolio for a long time but didn't have the time. With the help of Antigravity, I was able to create it within a few hours.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Section UI/UX&lt;/strong&gt;: I love how the achievement section turned out. The hover effects and the way the UI shown integrate with the typography feel very polished.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Animation&lt;/strong&gt;: Added small micro-animations like magnetic buttons, a custom animated cursor, and smoother mobile header open/close transitions.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Supaboard: A realtime whiteboard</title>
      <dc:creator>Amit Kumar Sharma</dc:creator>
      <pubDate>Thu, 20 Jul 2023 15:29:43 +0000</pubDate>
      <link>https://dev.to/amitksh/supaboard-a-realtime-whiteboard-3f2i</link>
      <guid>https://dev.to/amitksh/supaboard-a-realtime-whiteboard-3f2i</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;Realtime Whiteboard application using Refine, MaterialUI and Supabase. It uses the Refine's Pixels application example. &lt;/p&gt;

&lt;h3&gt;
  
  
  Category Submission:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Most Technical Impressive&lt;/li&gt;
&lt;li&gt;Best Project built using Supabase&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  App Link
&lt;/h3&gt;

&lt;p&gt;Github:- &lt;a href="https://github.com/amit-ksh/supaboard" rel="noopener noreferrer"&gt;https://github.com/amit-ksh/supaboard&lt;/a&gt;&lt;br&gt;
App Link:- &lt;a href="https://refine-supaboard.netlify.app/" rel="noopener noreferrer"&gt;https://refine-supaboard.netlify.app/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Note: Github login not working right now&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhrnnvh0qv0ztktbis24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhrnnvh0qv0ztktbis24.png" alt="supaboard login page" width="799" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vctlt22acuf4q34mkn2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vctlt22acuf4q34mkn2.png" alt="supaboard list page" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flms2uo49qkvl1dms3xkk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flms2uo49qkvl1dms3xkk.png" alt="supaboard app" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;

&lt;p&gt;Supaboard is a realtime whiteboard built using Refine, MaterialUI and Supabase. It is a simple and easy to use tool for creating art or playing &lt;em&gt;Pictionary&lt;/em&gt; (a classic party game that requires someone to draw a picture while their teammates try and guess what they're drawing) &lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Source Code
&lt;/h3&gt;

&lt;p&gt;Github:- &lt;a href="https://github.com/amit-ksh/supaboard" rel="noopener noreferrer"&gt;https://github.com/amit-ksh/supaboard&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Permissive License
&lt;/h3&gt;

&lt;p&gt;MIT License&lt;/p&gt;

&lt;h2&gt;
  
  
  Background (What made you decide to build this particular app? What inspired you?)
&lt;/h2&gt;

&lt;p&gt;Supaboard is inspired by Refine's Pixels application which helps to create amazing art and share it with your friends easily. &lt;br&gt;
Also, I wanted to learn about MaterialUI and Supabase. I was amazed by how easy to create a complex application within a week, if started from scratch I'm sure took me months to build this. And with the help of Refine, it become easier to create this I spent less than 1 minute building the authentication for this app.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I built it (How did you utilize refine? Did you learn something new along the way? Pick up a new skill?)
&lt;/h3&gt;

&lt;p&gt;While building the Supaboard, I utilized the following technologies and gained new skills along the way:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refine&lt;/strong&gt;: I leveraged Refine, a powerful framework for creating realtime applications with the help of Supabase and MUI refine module. It also provides different state management, authentication and authorization module for creating the application faster. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MaterialUI**: I used MUI to create a modern and responsive app user interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;React &amp;amp; Typescript&lt;/strong&gt;: I used React for developing reusable and modular components and typesafe applications which improves code organization and maintenance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supabase&lt;/strong&gt;: I use Supabase, an open-source platform, to simplify database management and ensure secure and scalable backend infrastructure. And with the help of Refine, it becomes a lot easier to manage the Supabase database&lt;/p&gt;

</description>
      <category>refinehackathon</category>
      <category>supabase</category>
      <category>mui</category>
    </item>
  </channel>
</rss>
