VP Bygg is a homepage and ecommerce site for a building materials retailer. VP Bygg needed custom behavior in calculating sizes of orders, to make it user friendly for contractors to order materials. The site was therefore made in Gatsby JS with its own shopping cart and order logic.
The backend is handler with with AWS Lambda and AWS DynamoDB to allow a flexible and scalable serverless backend.
To allow for quick iteration, only JSON files were used as data sources in the beginning, but it gradually shifted to being JSON files editable through Netlify CMS to make editing possible for non-technical users.
The site performs well, uses rich data for products, automatically creates a feed to Google Shopping.
Votify is a social jukebox for Spotify. The idea is that a group of people can vote for songs and create a collaborative playlist on the fly. Several similar apps exist, but none are good enough in my opinion. I did a write-up on the status of these apps on my blog.
The app isn't that big or complicated at the moment, but the system is quite complex, as it needs to communicate flawlessly with the Spotify API and between all the participants. The UX on an app like this should be near perfect and extremely intuitive, which is challenging to make. The backend is currently handled on an Express server and MongoDB. Much of the logic could be moved to a real-time database such as Firebase, even though it will always need a thin server to handle the core logic of communicating with the Spotify API.
|Status||MVP shipped. Needs better UX to launch.|
|Problems||Needs promotion and a monetization strategy.|
|Frontend stack||React, Redux, Semantic UI|
|Backend stack||Express, MongoDB|
|Other tech||Spotify API, Socket.io|
allematpriser.no is an ambitious webapp that aims to provide price comparison and identify good offers on grocery products in Norway. It currently scrapes some online grocery stores and gets offers from grocery stores' own promotions via Shopgun. Having user contributions and some social capabilities is on the roadmap. So is using machine learning, but it might be overkill for a service like this. I did write an article about the topic on my blog.
This idea is quite ambitious and hard to make really good, and the service it provides is not necessarily that useful. It's not clear whether pursuing this idea is worth the investment needed.
|Problems||Needs promotion, better UX, and user feedback.|
|Backend stack||Scrapy, AWS Lambda, Strapi, Express, MongoDB|
|Other tech||AWS, Shopgun|
Røde reiser is a travel agency specializing in travels to China with a focus on revolutionary history. What is known as red tourism has seen a global downturn since its heyday in the 1960-70s. VFA Solutions helped give the concept a modern image reflected in sleek design in combination with classic posters from past eras.
The site is made entirely in the Vue static site generator Gridsome. It leverages the framework's support for various data sources to use both Markdown and JSON data as content.
|Problems||Could use a CMS that is friendly to non-tech people.|
|Frontend stack||Gridsome, Vue|
Receipt scanning is a proof-of-concept of using the Google Cloud machine learning web services for something useful. Google is on their way to give world-class AI to the masses with their various AI-as-a-service products. I believe there is a huge market potential here, as speech recognition, OCR, and image recognition, and probably more to come, is available as a cheap web service. I tried to automatically read paper receipts, and it actually works quite well. Most of the work is making use of Google's output, but Google does all the heavy lifting.
This could be the basis of an app for businesses or consumers that need to do OCR on paper documents like receipts, but maybe the power of Google's ML could be leveraged in better ways. The current tech I used in this project is kinda roughly patched together, but it's a pre-MVP thing.
|Problems||Needs a product market fit|
|Backend stack||Google Cloud Storage, AWS Lambda, AWS DynamoDB|
|Other tech||Google Cloud Vision API|
HerbVu is one of the first webapps I made. I made it because I wanted a way to identify the best offers on special grocery products like sweeteners, nut flours, tea, etc. – basically things I buy on iHerb. Since iHerb has a great affiliate program, I thought this was a viable business. It turned out developing the site is just one third of the job. The rest is marketing, outreach, SEO, and UX design – which is harder for me to do casually. I learned a ton making it and still kinda believe in the idea.
Som effort should be made to find out whether there is a market for an idea like this. The market for these things is quite large and worldwide and it's growing too. I would make the site from scratch again with Nuxt or something, and go heavy on the outreach and marketing.
|Problems||Not maintained. Data is stale. "Old" tech.|
|Frontend stack||Angular 1.x, Material design|
|Backend stack||Scrapy, Express, MongoDB|
inneklemtedager.no is a simple website that gives an overview of what's known in Norway as sqeezed days. These are work days squeezed between two holidays, or a holiday and a weekend. People are generally free to choose which days to take out vacation days on in Norway, so taking a squeezed day off can give you a looong weekend to go skiing or something.
This website actually got featured in some online news outlets in 2017, which made it go viral for a while. Unfortunately, it has no monetization strategy.
|Problems||Could be made much lighter with Hyperapp or something.|
|Frontend stack||React, react-create-app|
Dataportabilitet.no is a crowdsourced site for information about the data portability of Norwegian websites. See more about the reason for creating this and what EU's GDPR regulation can mean for data and the web on my blog post.
Main challange with this is app is finding a good way to handle crowdsourced material. I'm not really that happy with the result, and it may be that just using MediaWiki is better for this kind of stuff. I did, however, wish to make it easier to contribute than doing the entire MediaWiki thing. So I ended up using a form and handling contributions manually.
|Problems||Needs promotion and maybe better way of handling contributions.|
|Frontend stack||Hyperapp, Parcel|
|Backend stack||QuintaDB, Google Sheets|