Mobile Application, REST API

EnKode

Ideas, code snippets and project management all in the palm of your hands.

Overview

With limited options for a developer friendly application for note taking with standardized formating option, maintaining a repository of commonly used simppets of code, tracking progress during project development and with the capacity to export existing data or continue working from any device, an All-In-One option was a necessary tool for flexible thought processing and recording ideas as a they come.

Problem

Having ideas popped into my head in the stranges of places, especially when relating to projects that I am working on, the options for mobile applications which would allow me to instantly make a record of those thoughts and ideas were rather limited. Even the few that I found that partially solved the problem would either require an internet connection for full functionality or have limited capabilities.

Also, with most of the available options, I was always limited to working on my phone with no way to easily transfer notes or code from the phone to my laptop. And having to install and be constantly switching between several apps is sometimes problematic, even leading to app crashes and loss of work previously recorded.

Ideas

  • My first thought was to create a web application which would allow for taking notes, writing snippets of code and managing small personal projects. But with this, arrives the issue of always requiring an internet connection whenever I need to access the aplication.

  • Another possibility was creating the web application with a responsive design and offline capabilities and use existing mobile frameworks to convert the website to a mobile application. After reasearching the possibilities, in almost every case, the functionality of the application would be limited and it would not be able to take full advantage of the mobile operating system.

  • It was then I decided to go with a native or a close to native as possible mobile app especially as I was in the processing of exploring the capabilities of the Flutter Development Framework for cross-platform applications.

Challenges

  • Given my situation at the time, in a foreign country with restricted internet access, I was unable to get the Flutter framework up and running as it required an internet connection for initial and subsequent initialization. After weeks of trying with many failed attempts, it took installing specific applications onto my smartphone and using mobile data, connected through a hotspot to get Flutter configured.

  • Then there was the challenge of creating an API access controller that would allow the app to connect to a remote server and sync the user's data with that of the application. I spent day searching for best practices but many of the solutions were based on earlier versions of Flutter with many of the API used being deprecated in the latest version. But after many searches and video tutorials making web requests with Flutter's http package, I was able to create a framework that would manage connections to the API.

  • Given that the application required a network connection in order to fully test it's functionality, I was unable to use my personal smartphone to complete most of the necessary testing. I know there are virtual machines which were able to connect to my local server, and yes, they were my final resolve. The issue I had was they the virtual machines along with the compiling process of Flutter consumed the majority of my laptop's RAM which led very sluggish performance and sometimes even unresponsive. I was not able to have any other programe running while I was testing, especially not the web browser.

Solution

Develop a cross-platform mobile application capable of being deployed to both Android and iOS devices. Which also provided syncing capabilites for making content available across devices.

Features

  • Take notes and keep them organized with color coded notebooks.

  • Format notes with the integrated markdown editor.

  • Save favorite pieces of codes with snippets.

  • Write code in any of your favorite programming languages with syntax highlighting.

  • Projects, tasks and issues management.

  • Offline access and management of notes, snippets and projects.

  • Your content synced accross all your devices devices.

  • Light, Dark or System specified theme.

Services Provided

Mobile Application

REST API

Technologies Used

HTML

PHP

MySQL

Visual Studio Code

Flutter