VulCode

Web apps and PWAs with offline support

We build apps that run in the browser and that users install on their phone like any app, without a store: an icon on the home screen, working on a weak connection and notifications. We also say plainly when a PWA is not enough and a store app is the better choice.

Service catalog
The VulCode client panel: balance, projects with their budget, tickets and recent activity
App installedOpens from the home screen, offline too
A locked iPhone with four VulCode panel notifications: a ticket reply, a new invoice, a project status and a report

What a web app and a PWA are

A web app runs in the browser. A PWA is one you can install, launch without the browser bar and use on a weak connection.

What we comparePWAStore appPlain website
Installed without an app storeYesA link, a QR code or a visit to the site is enough.NoNo
Updates without store reviewYesA new version reaches everyone on next open.NoEvery version waits for the store's review.Yes
Works with no networkPartlyWhat we plan works, such as recently opened data.YesNoOffline, only the browser's no-connection message.
Notifications on iPhonePartlyFrom iOS 16.4, once added to the home screen.YesNo need to add it to the home screen.No
Full access to phone featuresPartlyCamera and location while the app is open; background work, widgets, and Bluetooth and NFC on iPhone stay with store apps.YesNo
Visible in an app storeNoYesCustomers find it in the App Store and Google Play.No
When to pick itA panel, an internal system or a customer tool: one version for phone and desktop, with changes at once.When customers should find the app in a store, or you need phone features the browser cannot reach.

When the browser offers to install

The browser checks by itself whether a site meets the conditions of an app, and only then offers the install. This is how vulcode.com meets them, and we set up the same in your app.

Chrome on Android and desktop
  1. A secure connectionThe site opens with the padlock in the address bar.How we meet it: A certificate and a redirect from the version without the padlock.
  2. The app descriptionA file with the app's name, its start address and the look of its window.How we meet it: One fixed app identifier. Ours: the name VulCode, starting at /pl/.
  3. IconsAn icon in two sizes: 192 and 512 pixels.How we meet it: Plus an icon Android trims to the shape of its own icons.
  4. An app windowA window without the address bar, like any app.How we meet it: A full app window, with no browser bar.
  5. InterestAt least one click and 30 seconds on the page.How we meet it: Our own install button at the right moment.
The install offer

VulCode lands on the home screen with its own icon, and a long press gives shortcuts to the client panel, the offer and contact. Safari on iPhone never offers the install itself, so the app shows how to add it from the Share menu.

vulcode.com1
A software house in Kraków:
websites

Quality of tomorrow, available today: you talk to the person who writes your code, and a free quote comes back within an hour.

Contact UsOur Services
What we build
online stores
mobile apps
panels and systems
Install app?
VulCodevulcode.com
CancelInstall
Installing...
9:41
Thursday, 8 October
CalendarPhotosMapsClockSettingsFilesNotesVulCode
VulCode installednowThe app is on your home screen.

What works offline and what always comes from the server

A small script runs behind the app and decides what to show with no signal. We set it up so the app keeps working offline where that is safe and never pretends its data is fresh.

TService
Jobs
Map
Clients
Stock
Reports
Today's jobs
Thursday, 8 October
Technician 01 tablet: synced 08:12
TimeJobClientTechnicianStatus
08:30Z-2318Client 01Technician 01In progressreport, signature
09:30Z-2319Client 04Technician 01Schedulednote
10:00Z-2322Client 07Technician 02In progress
11:30Z-2323Client 15Technician 02Scheduled
13:00Z-2320Client 09Technician 01Scheduled
15:30Z-2321Client 12Technician 01Scheduled
Latest changes
09:41Technician 01 added the report and client signature to Z-2318
09:41Technician 01 added a note to Z-2319
08:12Technician 01 fetched today's jobs
TJobsTechnician 01No network
No network. Showing the jobs fetched at 08:12, and saving changes on the tablet.
Today
08:30 · Z-2318Client 01In progress
09:30 · Z-2319Client 04Scheduled
13:00 · Z-2320Client 09Scheduled
15:30 · Z-2321Client 12Scheduled
To send3
1Job report Z-23184 photos, saved 09:36waiting for network
2Client signature, Z-2318saved 09:37waiting for network
3Note on Z-2319saved 09:40waiting for network
Parts in stock
Stock levels always come from the server, so we do not show them offline.
How our client panel does it
  1. The app's screensfirstServerwith no networkThe last saved version

    With a network you always see the newest version, and with no signal the app still opens.

  2. Images, icons and the app's filesfirstPhone storagewhen they are not thereServer

    Every new version of a file gets a new name, so a saved copy is never stale, and the app opens at once.

  3. Balances, statuses and invoicesalwaysServerneverPhone storage

    A stored copy could show a cancelled invoice as active, so this data always comes straight from the server.

  4. A page with a server errornever storedPhone storage

    When the server briefly does not answer, the phone does not keep that page and never shows it later as the offline version.

  5. A new version of the appat onceReaches everyoneremoves only its ownOld copies

    Nobody closes an app on their phone for weeks, so a new version does not wait for a restart.

A push notification that always arrives

Your system sends a notification and the browser's push service delivers it once the phone is online. A few of the rules we keep come from bugs we fixed in our own panel.

The app's server

Every kind of notification has its priority and the time it waits for the phone.

A notification with its priorityThe browser's push service

Google, Mozilla, Microsoft or Apple, depending on the browser, holds the notification until the phone is back online.

  • Tickets, payments and system mattershigh priority3 days
  • Projects and the partner programmenormal priority24 hours
  • Newslow priority, silent12 hours

When the phone was off for longer, the same message waits in the panel under the bell, as that channel is on by default.

Once the phone is onlineThe panel's script on the phone
  • Every notification has content and shows, even when something goes wrong, because after a few empty ones the phone could turn the app's notifications off.
  • Two notifications about different matters never merge into one, and none is lost on the way.
  • The panel has its own notification script, separate from the site, so the consent always lands in the right place.
The phone

A tap opens the panel right where the matter is. On iPhone notifications work from iOS 16.4 in an app added to the home screen, and we ask for consent only after a tap on a button.

a colour icon: Android shows a bloba one-colour badge: the shape shows
Thursday, 8 October
9:41
VulCodeShow less
Reply in a ticketnowSupport 01 replied in ticket #18: "SSL certificate problem".VulCode
New invoice29 min agoAn invoice was issued for stage 2 of the "Company website" project.VulCode
Project status changed54 min agoThe "Online store" project is now: In review.VulCode
New project report1 hr agoThe "Week 41" report was added to the "Online store" project.VulCode

A web app we use every day

This is how our client panel works: clients follow their projects, payments and tickets in it, in the browser or in the app installed from vulcode.com.

A project schedule in the VulCode client panel: the stages of work with a date and a description
PanelEmailDiscordPushProjectsTicketsPaymentsPartner programmeNewsSystem

Clients switch each of the six notification categories on separately for the panel, email, Discord and phone notifications.

vulcode.com: one installed app/en/the site/en/panel/the client panel

The panel runs within the same installed app as the site, and in a browser it opens like any page.

How a web app gets built

From a list of screens to an app installed on your users' phones.

  1. What you getA screen list and a quote

    Scope and screens

    We list who uses the app, on which devices and what must work offline.

  2. What you getAn approved prototype

    Design and prototype

    We make the wireframes and a clickable prototype together with our partner agency Aphrodi and check them on a phone before any code.

  3. What you getWorking stages

    Test version

    The app on a test address that can be installed and checked stage by stage.

  4. What you getA list of tested devices

    Device testing

    Android, iPhone and desktop: install, notifications, offline and updates.

  5. What you getThe app with your users

    Release

    The app on your domain, with monitoring and an install guide for users.

Common questions about web apps and PWAs

Answers about iPhone, offline use, installing, updates and the quote.

Want an app your users install from the browser?

Tell us who will use it and on which devices. We will reply within an hour with questions and a quote.