Combination of a spreadsheet visual interface with a language operating on actual cells and tables.
Like functions in Excel without code duplication, like programming language without abstract logic.
Research project on a concept of a new programming language.
I was actively participating in product development, built an Integrated Development Environment for the language and an experimental platform for end-users to create web apps and publish them.
Planarly is a language
Drawing inspiration from programming concepts in tools like Matlab and Numpy, it is built around the table-as-data-structure and designed to be a superior alternative to Excel.
Client had this idea for a long time and made it in as a backend core in C++.
Documentation
Youtube channel with tutorials.
Planarly is a spreadsheet
Familiar table UI capable of intuitive functional programming
Performance was crucial because of several factors causing higher load
- 2d table space is unlimited – user freedom
htmlis chosen instead of acanvas– for rapid prototyping- backend is compiled from
C++toWASMmodule executed in the browser - offline capability
- multi-user collaboration is happening in the host browser – for serverless setup
Technologies used in frontend
ReactandMaterial UIReduxand toolkit for state managementredux-sagafor side-effects managementprotobuffor backend communicationwebsocketsfor realtime server communicationwebRTCfor p2p connectivitywebpackand latervitebuild systemdexiefor local cache databaseweb workersforWASMmodule executionservice workerfor offline app capabilitieslinariafor fast css-in-js solutionplaywrightandjestfor testingGithub ActionsforCI / CDDigitalOceanfor deploymentElectronto package for a desktop application
As a team lead I led the implementation of central server approach with the following stack
Go langfor servicesKafkaas a message brokerFoundation DBfor backend core state persistenceMySQLfor user and cloud storage- every service in
dockercontainer for future scalability
Planarly is a platform
The first use case for the language was selected to be a web app builder. One sheet holds data acting as a database, another sheet executes the business logic and a third one enables styling, similar to Webflow‘s styling panel. Click publish – and you have a fully functional web app.
Multiple iterations were tried to build a prototype.
