Home Projects About me

My Projects

Website, CRM, and scheduling tools for KZ2 Moving Company

Alyssa Components Scheme

Languages & Tools

Java, TypeScript, React, Google APIs (Mail, Maps, Calendar, Sheets), AWS, Linux, Selenium, Quartz, Spring, Gradle, JUnit, Twilio, HTML, CSS, Figma, Postman

Website: https://kz2movingcompany.com/

Quoting and scheduling

The back-end, implemented with Java/Spring, interacts with various web platforms such as Yelp using Selenium. Users of these platforms can request and promptly receive custom quotes and availability provided by the app. The Quoting API is also utilized by the website and a desktop CLI app.

The app analyzes quote requests to determine the options the business can offer. The company typically has multiple teams working in different areas on jobs of varying sizes, starting and finishing at different times. The teams themselves can consist of 2-6 members, use different sizes of trucks, and require different sets of equipment.

In performing this analysis, the app considers the current schedule and all relevant factors related to the teams. It strives to balance customer convenience, minimize idle driving miles and team hours, and ensure that an appropriately sized truck with the necessary equipment is provided. If a perfect match isn't possible, the program suggests alternative options and may offer a discount if the customer agrees to a less convenient time.

Once the customer sends a booking request, the job is added to the spreadsheets and calendar via Google APIs, followed by the customer and each member of the assigned team receiving email and SMS notifications. The day before the job, the customer and each team member receive another SMS asking them to confirm their readiness for the move. If someone does not confirm, the manager is notified.

Additional functions include requesting feedback and reviews, tracking revenue and expenses, performing accounting, monitoring a database of blacklisted customers among moving companies, and keeping track of important due dates.

Alyssa Schedule Scheme

Motivation

As I was taking my first Java course, I was also helping my friend to start a moving company. One of my responsibilities was responding to a lot of quote requests every day. It was a repetitive task that required a quick and accurate response. Sometimes I would spend too much time doing calculations, so the customer would move forward with another business, and sometimes I would make mistakes in a hurry. That's when I decided to apply my just-learned programming skills to improve my efficiency.

First Launch

A month later I rolled out my first build. The product was raw and downright terrible. My program would crash every few hours and I often had to spend long nights testing and debugging. Quite often I would sit in a class and a customer would write something ridiculous in their quote request sending my software to a crash and requiring me to respond to quotes manually.

Results

Despite a bumpy start, the initiative turned out a tremendous success. Customers loved our quick and detailed quotes and booked their moves with us by the time others managed to reply. The app reduced the manager's (that's also me) workload by 80% and increased the business' revenue by 150%. As time went by and I was becoming a better programmer, I was improving my code and even had to rewrite almost the entire project twice. Throughout the years, the app got many new features and became a robust product.

Skills

  • Most importantly - I learned how to do research and find technical solutions for my ideas.
  • I learned how to setup a Java/Gradle project and how to write unit tests with JUnit.
  • I found out how to use Spring framework for accepting and handling HTTP requests.
  • I figured out how to deploy my app to the cloud, so that it is reliably available 24/7.
  • Before I studied multithreading in class, I learned about the concept on my own and implemented that cool feature in my app.
  • I learned best front-end practices, picked up React, and got come practice with HTML, CSS, and Figma.

  • Design-To-Code web app

    Design-To-Code Quick Demo

    Languages & Tools

    Redis logo Open AI logo React logo TypeScript logo VS Code logo

    GitHub: https://github.com/BashkirovN/design-to-code

    About

    This project is a React application that allows users to upload an image of a design, process it using the OpenAI API and generate code based on it. It utilizes the Greptile API for processing GitHub repositories and generating code. Greptile knows your repo like a senior developer, so it will tell you exactly what files need to be updated to get the desired design.

    Skills

    A bit of practice with TypeScript, React, Vite, and Prism. Got to play around with prompt designing and response parsing. Also learned how to safely manage API keys in production.


    MessageMe Chat App

    Message Me Project Chatroom Screen

    Languages & Tools

    Ruby logo Rails logo Redis logo Redis logo VS Code logo

    GitHub: https://github.com/BashkirovN/message_me

    About

    The project is a toy-chat-app. Messages are broadcasted via WebSocket, so users can chat in real time!

    Skills

    While working on this project, I learned about the WebSocket protocol and the ActionCable feature. For the front-end, I decided to experiment and, instead of using the familiar Bootstrap, tried out Semantic UI, which I found to be very convenient and intuitive. Lastly, I gained hands-on experience with Redis.


    Alpha Blog

    Alpha Blog Project Home Screen

    Languages & Tools

    Ruby logo Rails logo Bootstrap logo VS Code logo

    Links:

    The app is hosted on a free Render.com hosting.
    The server might take up to 60 seconds to spin up.

    Deploy: https://alpha-blog-8jfv.onrender.com

    GitHub: https://github.com/BashkirovN/alpha_blog

    About

    The project is a toy-blog-app. Users can view published articles, filter them by Categories, and read what they are most interested about. Users can also sign up to be able to post, edit, and delete articles of their own. The app has accounts with admin priveleges. Admins can create new categories, edit and delete any articles, and also delete user profiles.

    Skills

    Implementing this project provided me with a comprehensive understanding of how Rails applications are built. I gained insights into the responsibilities of each part of the MVC (Model-View-Controller) framework and learned how migrations work. I also developed proficiency in creating CRUD (Create, Read, Update, Delete) functions and managing multiple resources.

    Additionally, I built an authentication system from scratch and utilized Bootstrap for front-end development. I worked with one-to-many and many-to-many associations at the database layer and successfully deployed the project to a production environment. This project also allowed me to practice my skills with both Bootstrap and Ruby.


    Build Your Own World

    Build Your Own World Project Gif

    Languages & Tools

    java logo Intellij Idea logo

    About

    In this project, I built a 2D tile-based world exploration engine that generates pseudorandom levels. One of the most complex parts of the project was writing an algorithm that would draw rooms and hallways such that all the spaces are connected and no walls break into open space. User can save their progress, load the saved game and continue playing. Additional features include character animations, cut scenes, and sound effects. The player's task is to explore the level and eliminate all the monsters. Once the level is cleared, the boss will show up for the final fight.

    Skills

    This long software engineering project required a great deal of exploration and experimentation. The goal was to practice handling a larger piece of code in the hopes of emulating something like a product development cycle. It was a large design project that required me to work through every stage of development from ideation to presentation. Some of the most interesting aspects of the project were designing gameplay, adding music and sounds, and creating character animations.


    NGordnet (NGrams)

    NGordnet Project Cover

    Languages & Tools

    java logo Intellij Idea logo

    About

    A browser based tool for exploring the history of word usage in English texts. The program allows to graph how popular was a chosen word in a given year in English texts starting from 1470. User can enter multiple words and choose a time span of interest. Additional functions include search of hyponyms and finding the shortest path between two words.

    Skills

    The project had an emphasis on creating a custom data structure that would allow handling large amounts of data in an efficient manner. I learned how to work with big data, graphs, parse large cvs files, and manipulate the extracted data. Additionally, I had to do a bit of software engineering to set up a web server that can handle NgordnetQueries.


    Tic-Tac-Toe

    TicTacToe Project Cover

    Languages & Tools

    java logoNetBeans logo

    About

    A Tic-Tac-Toe game that can be played with another person or a computer player. Playing against the computer makes no sense because you can never beat it :)

    Skills

    In this project, I learned about java GUI libraries. Buttons, fields, and event listeners - all that was new for me as I was building my first Java application with a GUI ever!


    Canine Animal Classifier

    Canine Animal Classifier

    Languages & Tools

    Python logofastai logohuggingface logocolab logo

    About

    A web app that uses AI to recognize whether a canine-looking animal on a picture is a Wolf, Coyote, Dog, or Fox.

    Skills

    Building this app, I became familiar with the underlying principles of neural networks, machine learning, and artificial intelligence. I learned how to pick the right model, training data of proper size and quality, and how to train the model then.

    Link: huggingface.co/spaces/NikolaiB/Animal_Classifier


    Open Source contribution to Pytorch

    PyTorch Logo Cover

    Languages & Tools

    Python logo VS Code logo

    About

    Working with two other students, made our very first contribution to an open-source project. Our mentor picked for us an open bug that seemed to be moderately difficult but turned out to be a deeply rooted version compatibility issue.

    Skills

    In this project, I learned what it means to dive head-on into an entirely unknown codebase of hundreds of thousands of lines of code. At times we were totally lost, and at times just super frustrated. But we cheered each other up and didn't give up. Only through efficient teamwork and close collaboration were we able to identify the root of the problem and find a fix to it.


    Scheme Interpreter

    Scheme Project Cover

    Languages & Tools

    Python logo VS Code logo Scheme Language logo

    About

    The Scheme Interpreter project involved creating an interpreter for a subset of the Scheme programming language. The project required implementing the evaluation and application of Scheme expressions, as well as handling special forms and creating classes to describe Scheme expressions.

    Skills

    For this project, I had to learn the Scheme language and underlying principles of its work. I learned how to implement the evaluation and application of Scheme expressions, as well as handle special forms and create classes to describe Scheme expressions. Debugging and testing of my code took significant time as the project involved a lot of corner cases. Additionally, I gained experience with designing and implementing an interpreter for a programming language and get a better understanding how programming languages function behind the scenes. I had to think about the issues that arise in the design of a programming language and consider how they can impact the implementation of an interpreter. Working with a partner, I got a chance to further improve my teamwork, leadership, and collaboration skills.


    Ants vs. Some Bees

    Ants vs. Bees Project Cover

    Languages & Tools

    Python logo VS Code logo

    About

    Ants vs. Some Bees is a tower defence computer game. As the ant queen, you populate your colony with the bravest ants you can muster. Your ants must protect their queen from the evil bees that invade your territory. Irritate the bees enough by throwing leaves at them, and they will be vanquished. Fail to pester the airborne intruders adequately, and your queen will succumb to the bees' wrath. This game is inspired by PopCap Games' Plants Vs. Zombies.

    Skills

    The implementation involved a lot of object-oriented programming. I implemented various ant types, including HarvesterAnts and ThrowerAnts, and created a system for bees to move through the tunnel and attack ants. I also had to consider concepts such as health, food costs, and turn order to make the game functioning properly. This was a pretty large project, so efficient teamwork was very important.


    Hog

    Dice Project Cover

    Languages & Tools

    Python logo VS Code logo

    About

    Hog is a dice simulator game. Players take turns rolling dices and trying to be the first to reach a certain number of points. User can play against another person or a computer player. Computer can choose one of the playing strategies ranging from a naive one to a quite sophisticated and hard-to-beat one. There are special rules for rolling zero dice and reaching perfect square scores.

    Skills

    Working on the Hog project, I got practice with programming skills in Python, including use of control statements and higher-order functions. I also learned how to design and implement a simulation for a dice game and various playing strategies. I practiced debugging and testing my code. Additionally, working with a partner provided me with the chance to improve my teamwork and collaboration skills.


    Cats

    Cats Project Cover

    Languages & Tools

    Python logo VS Code logo

    About

    A web program that can measure typing speed and correct spelling errors. The project included text samples to be typed and a web server for a graphical user interface, provided by UC Berkeley’s CS61A course staff.

    Skills

    Reading from and writing to files, string manipulations, recursion, testing and debugging.