A few weeks ago as of writing this, I started my first ever internship at a local company, and in this post I'll be sharing my experience during that period. I'm writing this because I think others could find this interesting, but also because a teacher from my college who I'm quite close to, kindly asked me to share my experience once I'm finished, so this is really just taking out two birds with one stone.
Background
As many of you know, I attend college at the Electrical Engineering and Computer Science college part of "Ştefan cel Mare" University of Suceava, and as of writing this I'm in my second year. One of the requirements of the curriculum was 'field practice', where we would work (as interns) at a company/organization, to familarize ourselves with the IT landscape as well as learn new things. There are a couple of restrictions imposed on this:
- The total amount of hours worked must add up to exactly 90.
- You can't work more than 6 hours per day, or during weekends or holidays.
- The practice has to be done by September
This way, to complete the field practice in a time as short as possible, you'd need to work 6h/day, Monday to Friday, for three weeks. Of course, it is possible to spread out the practice over a longer time period, but I chose the former.
The field practice, or internship really, took place between the 7th and 25th of July, one week after exams were done, so I could recharge and also help my sister with joining university too (same as mine, but different field).
Looking for a company
In the past, the college would talk directly to companies so we would have practice spots already reseerved for us, but this year, since there's way more students than in previous years, we were left on our own. We would only get help in extreme cases where we failed to find a place to do field practice on our own.
In a way, it's somewhat understandable, since in the real world, nothing comes on a silver platter. Nonetheless, for many students, including myself, finding a company was a frustrating experience, especially since many of them just couldn't handle the insane number of applicants during this period.
So in early June, after hundreds of sent emails and CV, and many "we'll talk to you later" replies, I finally got a response from a company called Custom Code Factory, saying that they have open spots for July, and we'll talk futher at their office. That was a big relief, since finally the goose chase paid off.
First impressions
Of course, having known nothing about companies and internships besides what mass-media told me, I was expecting big company headquaters and a long drawn out interview. But oh BOY, was I wrong. It turns out this whole operation is orchestrated from an old grandma's attic, and the people there seem more like a family than a company.
We quickly got into talks about what sort of project I'll be working on, what expectations to have, and we also filled some documents, which were necessary for the university to acknowledge the practice period. I wish I would have taken some photos of the place, but they have some photos on their website too.
Starting the internship
July 7th was when I started the internship, and they've assigned me the project I'll be working on during those 3 weeks. As you may know, I already have experience with the basics of web (HTML,CSS,JS) and I've even worked with Node JS to build a Discord bot I later abandoned, but I wanted to learn more about those fancy web frameworks everyone is talking about.
The project would use Next JS and Google Maps' API to build an app. I chose to create an app that tracks the locations of cellular antennas on the map and shows various information about them. This was a project to fix a practical problem I faced, since I run out of signal frequently while travelling.
The app would store info about the antennas (generation, range, location, etc) as well as the operators that managed them.
The project was split into two main parts: the frontend, which is the main website users interact with, and the backend, that performs basic CRUD operations on the database. Let's talk about each of them in detail:
The frontend part
Building the frontend was straightforward. I started out with the basic Next JS template, where I was also familiarized with Tailwind CSS, then I added the map component using the React Google Maps API to place dummy markers on the map. Later I implemented a dashboard to edit the locations and the operators. Here's one of the pages, more screenshots for the final application are available here:
The backend part
The backend was where I encountered the most problems. The plan was first to create a dummy API route in Next JS that would simply operate with the antennas as objects in memory, then use an ORM to perform basic CRUD operations on the antennas and operators in a MySQL database (although I actually used MariaDB because of some changes related to my distro). The first part easy enough, but it was the second part that was quite frustrating.
The ORM that I used, TypeORM was a pain to set up, and a pain to use for the API. And between online answers and Copilot, finding solutions was particularly hard. In the meantime, I got some funny responses from AI like Thanks for sticking with it, we're getting close.
or Thanks for sharing the code, that helps a lot. You're really close!
.
So after hours of debugging and testing, I finally got the API to work, albeit, I was getting lots of errors which mainly had to do with TypeORM. Looking back, I should have used something like Prisma, which offers a much better experience. In fact, I used it in a different project I codedand it was so much easier.
document10
/
deno-fresh-notes-app
Basic notes app made using Deno and Fresh
Deno Fresh Notes App
This is a notes app created using Deno and Fresh. The app implements various concepts of web apps:
- Frontend created using Fresh, for lightning-fast load times
- Backend REST API using Prisma for basic CRUD operations on a database and file downloads
- Modern and responsive design using TailwindCSS
- All written in Typescript for seamless development
Screenshots
Installation
- Install dependencies
Make sure you have Deno installed and at its latest version.
git clone https://github.com/document10/deno-fresh-notes-app
cd deno-fresh-notes-app
deno install --allow-scripts
- Configure database
Update prisma/schema.prisma
and example.env
according to your database and rename example.env
to .env
.
Migrate the database and generate the client:
deno run db-setup
You can also use this command to manually generate the client if the previous command failed to generate it or you changed your settings:
deno run db-client
- Launch the server
deno run start
- (Optional) Set up optimized build
deno
…I should also have used TypeScript for the project, but since I didn't know that fully either, I decided to just use normal JS.
The atmosphere at the company
Of course, I wasn't the only one doing internships there, and I got to meet other students doing various other projects. One of them was building some fancy AI training app, nicknamed 'Trainify', and we also got to review each others' apps and discuss our painpoints.
We also got to eat together with the whole staff of the company at lunch, and watch Desperate Housewives together (I wish I was joking). We talked about various aspects of our lives, and it was overall a chill and welcoming space. The people there were also helpful whenever I (or others) were stuck, so the project would always move forward.
Closing thoughts
This whole experience was great for me, as I got to learn about many frameworks I was hesitant to touch in the past, but also I made many friends. They also said they're willing to accept me for practice next year too, so at least that will got smoother next year.
The source code for the project is available on my Github, since they advised me to use source control anyways, but the code is such a mess, and the build process is kinda complicated. I'll probably update it later, but I could still see it being useful for learning about web development.
Big thanks to everyone who made it this far, as well as Custom Code Factory, for giving me an experience of a lifetime.
Top comments (0)