<?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: AryanSharma9917</title>
    <description>The latest articles on DEV Community by AryanSharma9917 (@aryansharma9917).</description>
    <link>https://dev.to/aryansharma9917</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%2F508550%2F5d3bc1e7-a225-4fb4-a4f6-def4dd43384f.jpeg</url>
      <title>DEV Community: AryanSharma9917</title>
      <link>https://dev.to/aryansharma9917</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aryansharma9917"/>
    <language>en</language>
    <item>
      <title>LazySort AI: Drop the mess and let local Gemma sort it out</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Tue, 20 Oct 2026 11:33:26 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/lazysort-ai-drop-the-mess-and-let-local-gemma-sort-it-out-1578</link>
      <guid>https://dev.to/aryansharma9917/lazysort-ai-drop-the-mess-and-let-local-gemma-sort-it-out-1578</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;LazySort AI&lt;/strong&gt;, a local-first file organizer for the folder everyone keeps promising to clean “later.”&lt;/p&gt;

&lt;p&gt;Give it a cluttered folder and LazySort will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;scan the files without following unsafe symlinks,&lt;/li&gt;
&lt;li&gt;extract a limited amount of useful text,&lt;/li&gt;
&lt;li&gt;ask a locally running Gemma model what each file represents,&lt;/li&gt;
&lt;li&gt;propose a category, subcategory, and descriptive filename,&lt;/li&gt;
&lt;li&gt;explain each suggestion and assign a confidence level,&lt;/li&gt;
&lt;li&gt;wait for the user to approve or edit the plan, and&lt;/li&gt;
&lt;li&gt;safely organize only the approved files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is deliberately not another extension-based sorter. A traditional rule can see that two files are PDFs; it cannot tell that one is an invoice and the other is a project report. LazySort uses the meaning of the document to decide where it belongs.&lt;/p&gt;

&lt;p&gt;The people who get to be lazier are anyone with an overgrown Downloads folder: developers, students, freelancers, and people who would rather do almost anything than open and rename forty mystery documents.&lt;/p&gt;

&lt;p&gt;The safety rule is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gemma suggests → LazySort validates → the user approves → LazySort moves
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The model never receives direct filesystem access. LazySort never deletes files, never overwrites an existing file, and records completed operations so the last organization run can be undone.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/_kpx2yTp7HI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The repository includes a fictional sample folder at &lt;code&gt;demo/upload-this-folder&lt;/code&gt;, so the workflow can be demonstrated without exposing personal documents.&lt;/p&gt;

&lt;p&gt;The demo covers selecting a folder, checking that Gemma is ready, reviewing its explanations and confidence, editing and approving suggestions, organizing the files, confirming that zero files were deleted, and undoing the run.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AryanSharma9917" rel="noopener noreferrer"&gt;
        AryanSharma9917
      &lt;/a&gt; / &lt;a href="https://github.com/AryanSharma9917/lazysort-ai" rel="noopener noreferrer"&gt;
        lazysort-ai
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;LazySort AI&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Drop the mess. Let AI sort it out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LazySort is a local-first file organizer that uses &lt;strong&gt;Gemma 3 through Ollama&lt;/strong&gt; to understand messy files, propose meaningful folders and names, and let you approve every change. It is a submission project for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19" rel="nofollow"&gt;Hacktoberfest 2026 Week 3: Slow and Steady challenge&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instead of opening, identifying, renaming, and sorting files one by one, select a folder and review the organization plan Gemma prepares. LazySort never deletes files.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open-source AI?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;File names and document contents can be personal. When &lt;code&gt;OLLAMA_BASE_URL&lt;/code&gt; points to localhost, inference happens on your machine: there is no mandatory proprietary AI API, no analytics, and no permanent storage of extracted content. You can also swap the configured Ollama model. If you configure a remote Ollama endpoint, extracted information is sent to that server—local inference is not an absolute privacy guarantee.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Semantic classification and descriptive renaming…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AryanSharma9917/lazysort-ai" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Repository: &lt;a href="https://github.com/AryanSharma9917/lazysort-ai" rel="noopener noreferrer"&gt;github.com/AryanSharma9917/lazysort-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source under the MIT License. The README includes installation instructions, architecture notes, a safe demo guide, API documentation, security limitations, and testing instructions.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;LazySort is a Python application with a focused web dashboard rather than a chatbot interface.&lt;/p&gt;

&lt;p&gt;The main components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; for the local application and validated API endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 4B&lt;/strong&gt; as the open-weight reasoning model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; for local model serving&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pydantic&lt;/strong&gt; for strict structured-output validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPDF and python-docx&lt;/strong&gt; for bounded document extraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML, CSS, and vanilla JavaScript&lt;/strong&gt; for the review dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Understanding files with Gemma
&lt;/h3&gt;

&lt;p&gt;For each file, LazySort sends Gemma the filename, MIME type, size, and a bounded content excerpt. Gemma returns JSON containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Finance"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"subcategory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Expenses"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"suggested_filename"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"october-expenses.csv"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The file contains dated vendor and expense amounts."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pydantic validates every response. If Gemma returns malformed output, LazySort retries once. If the second answer is still invalid, the file is marked as low-confidence and sent to manual review instead of being silently acted upon.&lt;/p&gt;

&lt;h3&gt;
  
  
  Treating documents and model output as untrusted
&lt;/h3&gt;

&lt;p&gt;File content can contain prompt injection, so the classification prompt explicitly labels filenames and extracted text as untrusted data—not instructions. It tells Gemma to ignore commands inside documents and never suggest deletion, shell commands, absolute paths, or unsupported details.&lt;/p&gt;

&lt;p&gt;Prompt instructions are only one layer. Deterministic application code enforces the real security boundary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;category, subcategory, and filename are sanitized separately;&lt;/li&gt;
&lt;li&gt;traversal sequences, path separators, control characters, and reserved names are rejected;&lt;/li&gt;
&lt;li&gt;the original extension must be preserved;&lt;/li&gt;
&lt;li&gt;every source and destination must remain under the selected root;&lt;/li&gt;
&lt;li&gt;symlinks and protected operating-system directories are rejected;&lt;/li&gt;
&lt;li&gt;file extraction has configurable byte and character limits; and&lt;/li&gt;
&lt;li&gt;conflicts receive deterministic numeric suffixes instead of overwriting data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Preview, approval, and undo
&lt;/h3&gt;

&lt;p&gt;The default behavior is a dry run. The dashboard shows the current file, proposed destination, suggested name, explanation, and confidence before anything changes. The user can edit suggestions and approve files individually or together.&lt;/p&gt;

&lt;p&gt;Execution is a separate API request. Every successful move is written to a transaction log containing filesystem metadata only—never document contents. If one operation fails, LazySort reports the partial result accurately. Undo walks the completed transaction in reverse and refuses to overwrite a file that has appeared at the original location.&lt;/p&gt;

&lt;p&gt;The automated suite currently contains &lt;strong&gt;25 passing tests&lt;/strong&gt; covering scanning, extraction limits, ignored directories, path sanitization, traversal rejection, symlinks, structured-output parsing, malformed responses, retries, conflict naming, moves, partial failures, undo, API validation, and safe folder uploads. Ollama is mocked in automated tests, so CI does not need to download a multi-gigabyte model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;The files we postpone organizing are often the files we least want to send to an unknown server: invoices, resumes, meeting notes, expense records, and personal documents.&lt;/p&gt;

&lt;p&gt;With the default localhost Ollama configuration, Gemma processes extracted content on the user's own machine. LazySort requires no proprietary model account, has no mandatory per-request fee, performs no analytics, and does not permanently store extracted document text. The model is controlled by an environment variable, so users can inspect the stack and experiment with another compatible local model instead of waiting for a vendor to expose an option.&lt;/p&gt;

&lt;p&gt;Open innovation also shaped the safety design. Because the entire classification and execution boundary is visible in the repository, users can inspect exactly what reaches the model, which paths are rejected, and why the model cannot directly manipulate files. That is especially important for a tool whose purpose is handling private local data.&lt;/p&gt;

&lt;p&gt;There are honest limitations. Local inference speed depends on the user's hardware. Scanned PDFs need OCR, which is not included yet. Images and unsupported formats currently rely on filename and metadata rather than full multimodal analysis. Model suggestions can still be wrong, which is why human approval is a required part of the architecture.&lt;/p&gt;

&lt;p&gt;If a user changes &lt;code&gt;OLLAMA_BASE_URL&lt;/code&gt; to a remote server, extracted information is sent to that server. “Local-first” describes the default configuration; it is not a promise of absolute privacy under every configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;The included demonstration organizes four fictional files into useful destinations such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Finance/Expenses/october_expenses.csv
Meeting Notes/Project Management/project_willow_meeting_notes.txt
Project Management/Briefs/project-brief-willow.md
documents/personal_profile/morgan_example_profile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without LazySort, each file requires the same repetitive loop: open it, work out what it is, choose a folder, invent a useful name, create the folder, and move the file. LazySort turns that into one review screen.&lt;/p&gt;

&lt;p&gt;For the demonstrated four-file run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;files classified and organized: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;manual open/read/rename/move loops replaced: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;files deleted: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;organization runs that can be undone: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The payoff grows with the mess, while the important decision remains with the user: approve the plan, then get back to doing something better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — Gemma 3 4B is the semantic engine at the center of every organization proposal and runs locally through Ollama.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>PitchPilot: Turning Rough Client Briefs into Professional Proposals with Local Gemma AI</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:43:44 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/pitchpilot-turning-rough-client-briefs-into-professional-proposals-with-local-gemma-ai-196n</link>
      <guid>https://dev.to/aryansharma9917/pitchpilot-turning-rough-client-briefs-into-professional-proposals-with-local-gemma-ai-196n</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;PitchPilot is an open-source AI proposal and quote generator for freelancers.&lt;br&gt;
It turns an informal client brief into a complete project proposal, concise&lt;br&gt;
quote, or client-facing email. The result remains editable so the freelancer&lt;br&gt;
can review every claim, price, and timeline before sharing it.&lt;/p&gt;

&lt;p&gt;Freelancers repeatedly translate client messages into scope, deliverables,&lt;br&gt;
milestones, assumptions, pricing, and next steps. PitchPilot reduces that&lt;br&gt;
administrative work without removing the freelancer's responsibility for the&lt;br&gt;
final offer. Drafts can be copied, downloaded as Markdown, or printed and saved&lt;br&gt;
as PDF.&lt;/p&gt;

&lt;p&gt;The project fits the Side Hustle theme because it solves a focused problem&lt;br&gt;
directly connected to earning freelance income. It is intended for independent&lt;br&gt;
developers, designers, consultants, marketers, and other professionals who&lt;br&gt;
regularly prepare project proposals.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;PitchPilot is demonstrated locally so client briefs can remain on the user's&lt;br&gt;
computer. The repository includes everything needed to run the demo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/AryanSharma9917/pitchpilot-ai.git
&lt;span class="nb"&gt;cd &lt;/span&gt;pitchpilot-ai

python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

ollama pull gemma3:4b
uvicorn app.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After starting the application, open the local address displayed by Uvicorn in&lt;br&gt;
your browser.&lt;/p&gt;

&lt;p&gt;The interface includes a &lt;strong&gt;Load demo details&lt;/strong&gt; button that fills the form with&lt;br&gt;
a fictional client brief. Choose Full proposal, Quick quote, or Client email,&lt;br&gt;
then generate a draft. Local generation speed depends on the computer's CPU,&lt;br&gt;
GPU, and available memory.&lt;/p&gt;

&lt;p&gt;The demo workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm that the configured Gemma model is ready.&lt;/li&gt;
&lt;li&gt;Load the fictional example or enter a client brief.&lt;/li&gt;
&lt;li&gt;Select the desired output type.&lt;/li&gt;
&lt;li&gt;Generate and review the structured draft.&lt;/li&gt;
&lt;li&gt;Edit a section, then copy, download, or print the result.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AryanSharma9917" rel="noopener noreferrer"&gt;
        AryanSharma9917
      &lt;/a&gt; / &lt;a href="https://github.com/AryanSharma9917/pitchpilot-ai" rel="noopener noreferrer"&gt;
        pitchpilot-ai
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;PitchPilot&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Open-source AI proposal and quote generator for freelancers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Turn a rough client brief into a professional proposal in minutes, with model
inference through locally running Gemma and Ollama. No proprietary cloud LLM
API is required.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Local inference is not the same as a blanket offline or privacy guarantee
Installing Ollama and downloading the model requires internet access. A
remotely configured Ollama host receives the prompt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Freelancers repeatedly translate informal client requests into a project scope,
deliverables, milestones, pricing, assumptions, and client communication.
PitchPilot turns that routine drafting into a structured, editable starting
point while leaving the freelancer in control of the final proposal.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Generates a full proposal, quick quote, or client-facing email.&lt;/li&gt;
&lt;li&gt;Uses a configurable Ollama model, defaulting to Gemma 3 4B (&lt;code&gt;gemma3:4b&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Requests structured JSON and validates it with mode-specific Pydantic schemas.&lt;/li&gt;
&lt;li&gt;Makes one correction attempt if model output is malformed…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AryanSharma9917/pitchpilot-ai" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://github.com/AryanSharma9917/pitchpilot-ai" rel="noopener noreferrer"&gt;View the PitchPilot repository on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;PitchPilot uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemma 3 4B as the open-weight language model&lt;/li&gt;
&lt;li&gt;Ollama for local inference&lt;/li&gt;
&lt;li&gt;FastAPI for the backend API&lt;/li&gt;
&lt;li&gt;Pydantic for input and model-output validation&lt;/li&gt;
&lt;li&gt;Vanilla HTML, CSS, and JavaScript for the interface&lt;/li&gt;
&lt;li&gt;Pytest for automated testing&lt;/li&gt;
&lt;li&gt;GitHub Actions for continuous integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The browser sends project information to the local FastAPI application. The&lt;br&gt;
backend validates the request, creates a mode-specific prompt, and sends it to&lt;br&gt;
Gemma through Ollama's local API.&lt;/p&gt;

&lt;p&gt;PitchPilot requests structured JSON but does not assume every model response&lt;br&gt;
will be correct. Separate Pydantic schemas validate proposals, quotes, and&lt;br&gt;
emails. If Gemma returns malformed or incomplete data, the application makes&lt;br&gt;
one bounded correction attempt. If the second response remains invalid, the&lt;br&gt;
user receives a clear error rather than unreliable output.&lt;/p&gt;

&lt;p&gt;The application reports whether Ollama is unavailable, the configured model is&lt;br&gt;
missing, or the complete AI workflow is ready. Generated text is inserted into&lt;br&gt;
the page through text-based DOM APIs instead of being interpreted as HTML.&lt;/p&gt;

&lt;p&gt;Request-size and brief-length limits are enforced. The application rejects&lt;br&gt;
missing input, unexpected response fields, blank structured values, unavailable&lt;br&gt;
models, timeouts, and invalid model output. Its 27 automated tests cover request&lt;br&gt;
and response validation, readiness reporting, prompt construction, JSON&lt;br&gt;
extraction, correction retries, generation routes, pricing labels, error&lt;br&gt;
handling, and page loading.&lt;/p&gt;

&lt;p&gt;When the user has not supplied a budget, generated prices are explicitly&lt;br&gt;
presented as estimates. The interface reminds users to verify scope, rates,&lt;br&gt;
taxes, timelines, and contract terms before sending a draft.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Client briefs can contain private business information. Requiring every brief&lt;br&gt;
to pass through a proprietary cloud API gives users less control over where&lt;br&gt;
that information is processed.&lt;/p&gt;

&lt;p&gt;PitchPilot uses Gemma through Ollama, making it possible to run the core&lt;br&gt;
generation workflow on hardware controlled by the freelancer. No proprietary&lt;br&gt;
language-model API is required. Users can inspect the entire generation path,&lt;br&gt;
change the configured Ollama-compatible model, and modify the prompts,&lt;br&gt;
validation, and retry behavior.&lt;/p&gt;

&lt;p&gt;Local inference is not a blanket privacy or offline guarantee. Installing&lt;br&gt;
Ollama and downloading Gemma initially requires internet access. A remotely&lt;br&gt;
configured Ollama endpoint receives the prompt, and local machines or reverse&lt;br&gt;
proxies may have their own logging behavior.&lt;/p&gt;

&lt;p&gt;There are practical tradeoffs: local models require compatible hardware and&lt;br&gt;
storage, generation can be slower, and output quality can vary between models.&lt;br&gt;
Despite those tradeoffs, open-weight models give freelancers meaningful control&lt;br&gt;
over model selection, cost, deployment, and data handling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development Process
&lt;/h2&gt;

&lt;p&gt;I used GitHub Copilot during the initial development of PitchPilot. When that&lt;br&gt;
development session stopped working, I audited the repository, restored its&lt;br&gt;
missing validation models, tested the complete application, and finished its&lt;br&gt;
documentation and continuous-integration workflow.&lt;/p&gt;

&lt;p&gt;The final project includes a GitHub Actions workflow that installs the&lt;br&gt;
application and runs its automated tests on pushes and pull requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of GitHub Copilot&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TouchGrass: A Local AI That Plans Your Next 15 Minutes Outside</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Sun, 11 Oct 2026 15:53:49 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/touchgrass-a-local-ai-that-plans-your-next-15-minutes-outside-40jf</link>
      <guid>https://dev.to/aryansharma9917/touchgrass-a-local-ai-that-plans-your-next-15-minutes-outside-40jf</guid>
      <description>&lt;p&gt;Here’s a draft you can paste into DEV. Replace the &lt;strong&gt;Demo&lt;/strong&gt; placeholder with a real video or deployed link before publishing. I’ve kept the outdoor-testing claims honest.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;TouchGrass&lt;/strong&gt;, a local-first outdoor activity planner. It asks how much time you have, what kind of activity you’d like, your energy level, where you’re going, and any interests or limitations. It then creates a timed outdoor mission.&lt;/p&gt;

&lt;p&gt;The idea is to make planning a short step, not another reason to stay on your phone. Once the mission is ready, you can switch to a simple phone-free view, read the steps at a glance, and put your phone away.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;[&lt;a href="https://youtu.be/0tacnZu845k" rel="noopener noreferrer"&gt;https://youtu.be/0tacnZu845k&lt;/a&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo should show the preferences form, a mission generated by the local model, and the phone-free view.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/AryanSharma9917/touchgrass" rel="noopener noreferrer"&gt;TouchGrass on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;TouchGrass uses a small vanilla HTML, CSS, and JavaScript frontend with a FastAPI backend. The backend sends the user’s preferences to a locally running Ollama instance using the &lt;code&gt;qwen2.5-coder:3b&lt;/code&gt; model.&lt;/p&gt;

&lt;p&gt;The model returns structured JSON for the mission: preparation, timed steps, safety notes, and a completion message. The backend validates the response, including checking that the step durations add up to the selected time. If the model returns an invalid response, the app retries once and then reports an error instead of presenting it as a valid plan.&lt;/p&gt;

&lt;p&gt;The app doesn’t require an account or save mission preferences. Model generation runs through the configured Ollama server; downloading the model requires internet, but inference can run locally once it’s installed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Running the model locally made it possible to build the core feature without relying on a proprietary cloud AI API. The user’s preferences can stay on their own machine when Ollama is configured locally, and the model can be changed through configuration rather than tied to one hosted service.&lt;/p&gt;

&lt;p&gt;That comes with trade-offs: users need to install Ollama and download a model, and local models can return generic or unsuitable suggestions. TouchGrass validates the mission structure and includes safety reminders, but those safeguards can’t guarantee that an activity is right for every person or situation.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>OpsBuddy: An Open-Source AI Troubleshooting Assistant for DevOps</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Sun, 04 Oct 2026 14:54:22 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/opsbuddy-an-open-source-ai-troubleshooting-assistant-for-devops-5dka</link>
      <guid>https://dev.to/aryansharma9917/opsbuddy-an-open-source-ai-troubleshooting-assistant-for-devops-5dka</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;OpsBuddy&lt;/strong&gt; for my best friend, who is learning DevOps.&lt;/p&gt;

&lt;p&gt;When a Kubernetes pod keeps restarting, a Docker container exits unexpectedly, or a CI/CD run fails, it can be difficult to understand which part of the error matters or what to check first.&lt;/p&gt;

&lt;p&gt;OpsBuddy is a small troubleshooting assistant for those situations. You choose the area you are working on, paste an error or diagnostic output, and ask for help understanding it. It returns a plain-language summary, possible causes, recommended next checks, and commands to review.&lt;/p&gt;

&lt;p&gt;My friend has tried the app and shared feedback with me while I was building it. I'm keeping their name and personal details private.&lt;/p&gt;

&lt;p&gt;OpsBuddy is designed to help someone decide where to investigate next, rather than claim a definitive diagnosis. It does not connect to a Kubernetes cluster, execute commands, or make changes to a system.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Demo video:&lt;/strong&gt; [&lt;a href="https://youtu.be/ZXHzGoTD3U0" rel="noopener noreferrer"&gt;https://youtu.be/ZXHzGoTD3U0&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The demo shows a sanitized troubleshooting example being entered into OpsBuddy and the resulting explanation, possible causes, and suggested checks.&lt;/p&gt;

&lt;p&gt;The application currently runs locally, so there is no public deployment link. The video demonstrates the complete working flow instead.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/AryanSharma9917/opsbuddy" rel="noopener noreferrer"&gt;View OpsBuddy on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;OpsBuddy has a small browser-based interface and a FastAPI backend. The backend sends the submitted diagnostic text to Ollama running on the same computer and asks the open-weight model to produce a structured troubleshooting response.&lt;/p&gt;

&lt;p&gt;The default model is &lt;code&gt;qwen2.5-coder:3b&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;While testing the application, I found an interesting problem. The model suggested restarting a Kubernetes pod even though the prompt specifically asked it to stick to read-only troubleshooting. That made it clear that prompt wording alone was not enough.&lt;/p&gt;

&lt;p&gt;I added backend safeguards that remove known system-changing actions and common shell commands from suggested steps. I also limit displayed commands to a small read-only allowlist and ask for more information when the input is too vague to support a useful analysis.&lt;/p&gt;

&lt;p&gt;These checks are safeguards, not a guarantee that every response is correct or suitable for every environment. OpsBuddy never executes the suggested commands, and users should review them before deciding whether to run them.&lt;/p&gt;

&lt;p&gt;Diagnostic text is sent to the local Ollama service. Users should still remove passwords, tokens, API keys, and other secrets before sharing logs or diagnostic output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Troubleshooting logs and diagnostic output can contain information that people may not want to send to a hosted AI service.&lt;/p&gt;

&lt;p&gt;With the default setup, OpsBuddy sends the request to Ollama running on the same computer instead of sending it to a hosted AI API. Once Ollama and the model are installed, the analysis can run locally.&lt;/p&gt;

&lt;p&gt;Using an open-weight model also means the project is not tied to one proprietary AI API. A user can choose another compatible local model and decide what works best on their own machine.&lt;/p&gt;

&lt;p&gt;The trade-off is that local inference requires enough computing resources, and the model can still produce incorrect or overconfident answers.&lt;/p&gt;

&lt;p&gt;For this project, open innovation made it possible to build a local-first troubleshooting tool that gives the person using it more control over their diagnostic data and model choice.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built a DevOps CLI Tool in Go – Meet Codewise-CLI</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Mon, 14 Jul 2025 07:49:52 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/i-built-a-devops-cli-tool-in-go-meet-codewise-cli-5149</link>
      <guid>https://dev.to/aryansharma9917/i-built-a-devops-cli-tool-in-go-meet-codewise-cli-5149</guid>
      <description>&lt;p&gt;Hey Devs,&lt;/p&gt;

&lt;p&gt;I'm Aryan, and over the past few weeks, I’ve been working on a project that turned into something pretty useful — a command-line tool I named &lt;strong&gt;Codewise-CLI&lt;/strong&gt;. If you're into DevOps, YAML/JSON shenanigans, or just want to automate tedious tasks, you might find it handy too.&lt;/p&gt;

&lt;p&gt;Let me take you through what Codewise-CLI is, why I built it, and how you can use it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Codewise?
&lt;/h2&gt;

&lt;p&gt;Let’s be real — dealing with formats like &lt;code&gt;.yaml&lt;/code&gt;, &lt;code&gt;.json&lt;/code&gt;, or &lt;code&gt;.env&lt;/code&gt; in DevOps workflows can get annoying. And if you’re switching between projects and need Dockerfiles, GitHub Actions workflows, or Kubernetes manifests often, you end up copy-pasting a lot.&lt;/p&gt;

&lt;p&gt;So, I thought:&lt;/p&gt;

&lt;p&gt;“Why not build a CLI that automates these bits and lets me focus on writing actual code?”&lt;/p&gt;

&lt;p&gt;And that’s how &lt;strong&gt;Codewise&lt;/strong&gt; was born.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Can Codewise-CLI Do?
&lt;/h2&gt;

&lt;p&gt;Codewise is a terminal-first tool written in &lt;strong&gt;Go&lt;/strong&gt; using &lt;strong&gt;Cobra&lt;/strong&gt; and &lt;strong&gt;Viper&lt;/strong&gt;, and it does quite a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Convert between JSON ↔ YAML&lt;/li&gt;
&lt;li&gt;✅ Convert &lt;code&gt;.env&lt;/code&gt; to JSON&lt;/li&gt;
&lt;li&gt;✅ Encode/decode Base64 strings&lt;/li&gt;
&lt;li&gt;✅ Scaffold Dockerfiles for different languages&lt;/li&gt;
&lt;li&gt;✅ Generate Kubernetes manifests&lt;/li&gt;
&lt;li&gt;✅ Render &lt;code&gt;.tpl&lt;/code&gt; templates using &lt;code&gt;.yaml&lt;/code&gt; input&lt;/li&gt;
&lt;li&gt;✅ And more features coming soon...&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.amazonaws.com%2Fuploads%2Farticles%2Fpsbbbdzksh777rvt3vu1.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%2Fpsbbbdzksh777rvt3vu1.png" alt=" " width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;To try it out, simply clone the repository, build the tool, and move it to your path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/aryansharma9917/Codewise-CLI.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Codewise-CLI
go build &lt;span class="nt"&gt;-o&lt;/span&gt; codewise main.go
&lt;span class="nb"&gt;sudo mv &lt;/span&gt;codewise /usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codewise &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  A Few Quick Examples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Convert JSON to YAML:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codewise encode &lt;span class="nt"&gt;--input&lt;/span&gt; input.json &lt;span class="nt"&gt;--output&lt;/span&gt; output.yaml &lt;span class="nt"&gt;--type&lt;/span&gt; JTY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Generate a Dockerfile:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codewise generate dockerfile &lt;span class="nt"&gt;--output&lt;/span&gt; Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Render a GitHub Actions &lt;code&gt;.tpl&lt;/code&gt; file using values:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codewise template &lt;span class="nt"&gt;--template&lt;/span&gt; template.tpl &lt;span class="nt"&gt;--values&lt;/span&gt; values.yaml &lt;span class="nt"&gt;--output&lt;/span&gt; rendered.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🐳 Docker Support
&lt;/h2&gt;

&lt;p&gt;You can also run Codewise-CLI via Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull aryansharma04/codewise-cli:latest
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; aryansharma04/codewise-cli:latest &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;p&gt;Here’s what’s coming next for Codewise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ TOML/XML conversions&lt;/li&gt;
&lt;li&gt;✅ Interactive prompts (instead of just flags)&lt;/li&gt;
&lt;li&gt;✅ Auto-generate GitHub workflows&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;--force&lt;/code&gt; flag to overwrite existing files&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This is just the beginning. I built Codewise to solve a problem I faced often — and if it helps even a few more developers speed up their DevOps work, that’s a win.&lt;/p&gt;

&lt;p&gt;Feel free to check it out, use it, break it, suggest improvements, or open a PR if you’re feeling generous!&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/aryansharma9917/Codewise-CLI" rel="noopener noreferrer"&gt;https://github.com/aryansharma9917/Codewise-CLI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Containerization with Docker: A Beginner’s Guide</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Wed, 09 Oct 2024 05:32:24 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/containerization-with-docker-a-beginners-guide-gab</link>
      <guid>https://dev.to/aryansharma9917/containerization-with-docker-a-beginners-guide-gab</guid>
      <description>&lt;p&gt;Containerization has transformed modern software development, making it easier to build, ship, and run applications. One of the most popular tools for containerization is &lt;strong&gt;Docker&lt;/strong&gt;. This guide will introduce you to Docker and provide a step-by-step tutorial on creating and managing Docker containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is an open-source platform that automates the deployment of applications inside lightweight containers. These containers package an application with all its dependencies, ensuring that it runs consistently across different environments. The main benefits of using Docker include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Portability&lt;/strong&gt;: Applications can run on any machine that has Docker installed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolation&lt;/strong&gt;: Each container operates independently, preventing conflicts between applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Containers can be easily replicated or scaled up/down based on demand.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with Docker
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before diving into Docker, ensure you have the following installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Desktop (available for Windows, macOS, and Linux)&lt;/li&gt;
&lt;li&gt;Basic knowledge of command-line interface (CLI)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Building a Docker Image
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;Docker image&lt;/strong&gt; serves as a blueprint for your container. It contains everything needed to run your application, including code, libraries, and dependencies.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a Dockerfile&lt;/strong&gt;: This file contains instructions for building your image. Here’s a simple example for a Node.js application:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;   FROM node:20-alpine
   WORKDIR /app
   COPY . .
   RUN npm install --production
   CMD ["node", "index.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build the Image&lt;/strong&gt;: Navigate to the directory containing your Dockerfile and run the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-node-app &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Creating and Running a Container
&lt;/h3&gt;

&lt;p&gt;Once you have built your image, you can create and run a container from it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the Container&lt;/strong&gt;: Use the following command to start your container:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="nt"&gt;--name&lt;/span&gt; my-running-app my-node-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-d&lt;/code&gt;: Runs the container in detached mode (in the background).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-p 3000:3000&lt;/code&gt;: Maps port 3000 on your host to port 3000 in the container.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--name my-running-app&lt;/code&gt;: Assigns a name to your container.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verify the Container is Running&lt;/strong&gt;: Check if your container is up and running using:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Managing Docker Containers
&lt;/h3&gt;

&lt;p&gt;Docker provides several commands to manage your containers effectively.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;List All Containers&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stop a Running Container&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  docker stop my-running-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remove a Container&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  docker &lt;span class="nb"&gt;rm &lt;/span&gt;my-running-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Accessing Your Application
&lt;/h3&gt;

&lt;p&gt;After running your application in a container, you can access it via your web browser at &lt;code&gt;http://localhost:3000&lt;/code&gt;. This URL corresponds to the port mapping you set up earlier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Docker simplifies the process of developing and deploying applications by utilizing containerization technology. With this beginner's guide, you should now be able to create and manage Docker containers effectively. As you grow more comfortable with Docker, consider exploring advanced features such as Docker Compose for managing multi-container applications or integrating Docker into CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;By adopting Docker in your development workflow, you'll enhance both productivity and consistency across environments, paving the way for smoother deployments and better collaboration among teams.&lt;/p&gt;

&lt;p&gt;Citations:&lt;br&gt;
[1] &lt;a href="https://www.hostinger.in/tutorials/docker-start-a-container" rel="noopener noreferrer"&gt;https://www.hostinger.in/tutorials/docker-start-a-container&lt;/a&gt;&lt;br&gt;
[2] &lt;a href="https://docs.docker.com/reference/cli/docker/container/create/" rel="noopener noreferrer"&gt;https://docs.docker.com/reference/cli/docker/container/create/&lt;/a&gt;&lt;br&gt;
[3] &lt;a href="https://learn.microsoft.com/en-us/visualstudio/docker/tutorials/docker-tutorial" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/visualstudio/docker/tutorials/docker-tutorial&lt;/a&gt;&lt;br&gt;
[4] &lt;a href="https://docs.docker.com/compose/gettingstarted/" rel="noopener noreferrer"&gt;https://docs.docker.com/compose/gettingstarted/&lt;/a&gt;&lt;br&gt;
[5] &lt;a href="https://docs.docker.com/get-started/workshop/02_our_app/" rel="noopener noreferrer"&gt;https://docs.docker.com/get-started/workshop/02_our_app/&lt;/a&gt;&lt;br&gt;
[6] &lt;a href="https://learn.microsoft.com/en-us/dotnet/core/docker/build-container?pivots=dotnet-8-0&amp;amp;tabs=linux" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/dotnet/core/docker/build-container?pivots=dotnet-8-0&amp;amp;tabs=linux&lt;/a&gt;&lt;br&gt;
[7] &lt;a href="https://docker-curriculum.com" rel="noopener noreferrer"&gt;https://docker-curriculum.com&lt;/a&gt;&lt;br&gt;
[8] &lt;a href="https://www.geeksforgeeks.org/docker-tutorial/" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/docker-tutorial/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My First Hacktoberfest...</title>
      <dc:creator>AryanSharma9917</dc:creator>
      <pubDate>Thu, 05 Nov 2020 09:46:00 +0000</pubDate>
      <link>https://dev.to/aryansharma9917/my-first-hacktoberfest-2om7</link>
      <guid>https://dev.to/aryansharma9917/my-first-hacktoberfest-2om7</guid>
      <description>&lt;p&gt;✨My First Hacktoberfest... ✨ &lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;This was my first Hacktoberfest and I thoroughly enjoyed it. I exchanged 4 pull requests as per the guidelines and learned how to use GitHub. &lt;/p&gt;

&lt;h3&gt;
  
  
  Background
&lt;/h3&gt;

&lt;p&gt;The idea and inspiration were given by my elder sister who is a software engineer and has been associated with the fest for the past 3 years. I have been taught by her how to proceed with the fest and what all has to be done.&lt;/p&gt;

&lt;h3&gt;
  
  
  Progress
&lt;/h3&gt;

&lt;p&gt;I am a beginner. I like the way GitHub has helped me to get my self introduced to various open-source code over the platform I wish to explore it more and would continue contributing to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contributions
&lt;/h3&gt;

&lt;p&gt;I contributed in a project on CALCULATOR. I initially added percentage, average, power, remainder and sent pull requests for the same. Therefore, I completed 4 pull request successfully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reflections
&lt;/h3&gt;

&lt;p&gt;Overall, I enjoyed the Hacktoberfest 2020, it was really nice working with the open-source for the first time. I will surely participate again in the coming years. I have learned how to use GitHub successfully and also how to work with open-source. Yes, I have made a few connections while working with the project CALCULATOR @riya-17 @RakshitKumar04 . I am looking forward to building some new projects and contribute to GitHub and take help from GitHub for my upcoming project completion.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
