0% found this document useful (0 votes)
9 views8 pages

My Internship in Software Development

The document details a 15-week internship in software development at a healthcare technology company, where the author gained hands-on experience in backend and full-stack development using tools like GitHub, Django, and ReactJS. Key learning areas included version control with Git, Python programming, Django framework, PostgreSQL database management, deployment with Gunicorn, and performance optimization using Celery. The internship culminated in a project that involved migrating a feature to ReactJS and integrating AI for automated summary generation.

Uploaded by

unriddle.in
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views8 pages

My Internship in Software Development

The document details a 15-week internship in software development at a healthcare technology company, where the author gained hands-on experience in backend and full-stack development using tools like GitHub, Django, and ReactJS. Key learning areas included version control with Git, Python programming, Django framework, PostgreSQL database management, deployment with Gunicorn, and performance optimization using Celery. The internship culminated in a project that involved migrating a feature to ReactJS and integrating AI for automated summary generation.

Uploaded by

unriddle.in
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

My 15-Week Internship

Journey in Software
Development
This report outlines my transformative 15-week internship at a healthcare
technology company. Starting with beginner-level skills, I gained hands-on
experience in real-time software development, contributing to a paperless
IPD system that manages hospital records digitally. My role involved
backend and full-stack development, working with tools like GitHub, Linux,
Django, and ReactJS.

Through learning by doing, I enhanced my technical skills and collaborated


with a professional team using Agile practices. This internship deepened my
understanding of software product development, testing, deployment, and
maintenance in real-world environments.

by Niranjan Shetty
Mastering Git and
GitHub for Version
Control
At the start of my internship, I learned Git and GitHub from scratch. Git is a
distributed version control system that tracks code changes and enables
collaboration through branches and merges. GitHub hosts repositories
remotely, allowing teams to synchronize and review code.

I practiced cloning repositories, creating feature branches, committing


changes, and raising pull requests. Understanding branches and merging
helped maintain a stable main branch while developing features in parallel.

Key Git Commands


git clone, git status, git add, git commit, git push, git pull, git branch,
git checkout, git merge

Benefits Experienced
Effective collaboration, version tracking, and code management in a
professional environment.
Deep Dive into Python Programming
Python was the primary language used during my internship. I applied core concepts like Object-Oriented Programming, including
encapsulation, inheritance, abstraction, and polymorphism, to structure the backend using Django.

I also learned advanced topics such as decorators for modifying function behavior, byte objects for handling binary data, buffer
and I/O management for file operations, and robust error handling with try-except blocks. Learning by solving real issues helped
me grasp these concepts deeply.

Core Python Topics


Functions and Classes
OOP Principles
Decorators

Byte Objects and Buffers


Try-Except Error Handling
Working with Django Framework
Django was the backend framework used for rapid development and clean design. I worked with views, models, the admin panel,
and migrations to manage the database and application logic.

I also handled background tasks using Django signals and Celery, and participated in migrating frontend components from Django
templates to ReactJS, gaining insight into API-first architecture and frontend-backend separation.

Key Django Components Frontend Migration

Views (Function and Class-based) Converted Digital Summary feature from Django templates to
Models and ORM ReactJS, connecting frontend components to backend APIs.

Admin Interface

Migrations
Signals and Background Tasks
Managing Data with
PostgreSQL
PostgreSQL was the primary database system used to store patient and
application data. I learned to export live databases using pg_dump and
import dump files locally to test features with real data.

Most interactions were through Django's ORM, allowing me to write Python


queries instead of raw SQL. I also learned query optimization and debugging
database issues to ensure efficient data access.

Task Description

Exporting Dump File Used pg_dump to copy


production database

Importing Dump File Loaded .sql file into local


PostgreSQL

Connecting with Django Mapped models to tables via


ORM

Query Optimization Used filters and indexes

Debugging DB Issues Fixed issues with SQL and


migrations
Deployment with
Gunicorn and Handling
Errors
Gunicorn served as the WSGI HTTP server bridging Django and web servers
like Nginx. I learned to deploy the backend using Gunicorn, Nginx, and
Supervisor on a Linux server.

During deployment, I faced a 504 Gateway Timeout error caused by long-


running tasks like digital summary generation. I resolved this by increasing
Gunicorn's timeout, optimizing tasks with Celery, and managing server
processes effectively.

Key Learnings
WSGI server role, timeout configuration, error debugging, and
production readiness.

Deployment Setup
Gunicorn, Nginx reverse proxy, Supervisor, Ubuntu/Linux server.
Optimizing Performance with Process
Management and Celery
I encountered performance bottlenecks when processing many patient summaries simultaneously, leading to high CPU and RAM
usage. Understanding process vs. thread, I used Linux tools like top and ps to monitor resources.

To optimize, we implemented asynchronous task execution with Celery and Redis, limiting concurrent tasks and using batch
processing. This improved server stability and performance under load.

Process Management Tools Celery & Redis Task Queue

top, htop for monitoring Handled background tasks asynchronously to prevent timeouts
ps aux for process details and improve scalability.

kill commands to terminate processes


free -h and df -h for memory and disk checks
Front-End Migration and
AI Integration
I contributed to migrating the Digital Summary feature from Django
templates to ReactJS with TypeScript, creating reusable components and
integrating APIs for dynamic data rendering. This enhanced UI
responsiveness and modularity.

Additionally, I integrated Google's Gemini API to automate digital summary


generation using AI, handling authentication, prompt formation, and
response parsing. This reduced manual effort and ensured consistent
patient summaries.

ReactJS Migration Gemini API Integration


Component-based UI, hooks, API Automated AI-powered summary
integration, TypeScript usage. generation with Google Cloud and
Python requests.

You might also like