Call for Screenshots - Show us your production apps!

Thank you, @pietergb199!
It is almost all anvil standard components, sometimes with roles with some custom css. The only javascript component is the calendar. The plot is an anvil plotly component. The segmented button is a custom html with a bit of javascript. I hope the M3 theme will have a segmented button in the future that I can replace it with.

4 Likes

B2B SaaS that removes the mindless, repeatable tasks financial advisers face.
Implemented a fair amount of CSS and a small bit of JavaScript, and some custom animations for hover states and drag + drop files.
Currently working on a UI overhaul so still plenty of tidying up to do!

Here’s our all bank servicing calculator (country specific)

10 Likes

My problem has always been that I have never built a “generic” version of this product. They have all been highly customised for individual customers and therefore rather private.

I’m just in the process of building a generic base product. I started a month a go, and I’m now working full time on it (as of this week). Fixes all my current issues (though probably whilst introducing some new ones), but I’m reckoning on a 1st January ready date, even taking into account the festive period.

I’ll do a full write up on it once done for Show & Tell, including the full tech stack, design decisions (front and back ends) and how I’ve used A.I. assistants to ease my ever growing list of (supposedly temporary) joint pains by doing a lot of the typing for me, if not the thinking.

1 Like

Hi all,

this is a really cool Thread. Thanks for all your apps. It’s really motivating to see, what is possible with Anvil.

Cheers

Michael

1 Like

I built several production apps for the various businesses my wife and I own. In order of creation (oldest to newest):

Student Information System for a University

Basically we manage all the information about students, their tuition fees, courses, grades, transcripts through this app. It integrates with our learning management system (Moodle) via API so we can pull in grades and also register students for classes they choose.

We use custom roles (student, staff, finance, admin) so we can turn on or off various menus. It’s our oldest app and one we sort of take for granted these days. It just works with maybe 1-2 updates per semester.

Student Application System

Basically a bunch of forms with validation (painful to make) where prospective students can apply. Gives a check after each step and saves progress in between logins.

Machine learning competition site

An app I made for the machine learning course taught once a year at our university. They submit their predictions and it is scored against the private test set. Leaderboard is visible to other students so they can compete against each other. Negative days are shown since we offer the course each Spring.

ChatGPT clone

Threw this together in less than a month and it’s a small side business for me. Basically a ChatGPT clone but in Mongolian and using a local payment provider. Uses GPT-4o as the model and a FastAPI server sending server side events to the client (couldn’t figure out how to do this neatly with Anvil only).

Jewelry certificate app

We create in house certificates for our jewelry business on certain pieces. This allows customers to verify their certificate is real and as an archive for their future use. They receive a printed certificate and this is their confirmation/backup.

Furniture factory order system

This I am still working on. Basically an order system but with a good amount of custom logic for this business. We have design files that are parsed and invoices and materials lists are generated. It’s all in Mongolian since our workers aren’t great with English. I want to do a lot more with this to help automate factory operations but it’s early days.

That’s it! I’ve made a lot more but these are the ones still in use.

My dream is to build some amazing data dashboards/reports I could actually make a business out of, but I have yet to figure out what data people would be willing to spend money to see. If you have ideas I’m open!

10 Likes

This should also be here, I think!

4 Likes

Too many of my apps are used internally so can’t show in screenshots easily :upside_down_face: internal rostering with websockets for instant client coordination, live scoring apps for live streams, automated graphics generation, video uploaders, employee help centre/articles, plus many other smaller client/internal products managed by either anvil frontend or backend in some way

I have a done a couple of neat apps! One I can’t show, but I built a mockup of function for a rail dispatch system- issuing a track authority and the validation required.

This one is marked private: but I built a home lighting interface as py.space widget saved as a web app on my phone so my wife and I can easily control the lights from anywhere in the world. Basically it uses http requests to send webhooks to IFTTT (If This Then That) services.

4 Likes

I’d really love to see these, even if you have to put big black boxes over all the text, or use your browser’s Dev Tools to replace everything sensitive with “XXXXXX”!

I just migrated my facilities management app to the new M3 NavigationDrawerLayout (love it!).

Here is the ticket system (yet another…) :

I use the new side sheet to display the ticket history for the user.

6 Likes

Well that looks pretty!

Can you tell us more about the app – who uses it, how long it took you to build, anything else interesting or impressive about the project?

I love this switch! Was gonna create a custom component for it - didn’t know it was in M3

CleanShot 2024-12-09 at 13.47.04

1 Like

Thanks @meredydd!

The app, FriendlyQ, is for facility management of office buildings, but is also used by gyms and a hotel. The app has evolved over 4 years, built by myself as a solo developer/entrepreneur. It solves quite a few pain points for facility managers, is simple to use and my clients like it.

It has a package structure where you buy access to what you need. The ‘entry’ package is the smart QR codes. See https://friendlyq.com. I want to start selling this internationally, so if anybody knows someone to connect me with to get my QR codes in a building near you, please DM me.

Things that may be of interest:

  • backend logic and db is connected to anvil via Uplink

  • clients can have their own url using anvil environments

  • it recovers from expired sessions

  • it stores tickets locally on your device and only pulls new data from the server (using anvil-extras storage and anvil-labs.web_worker)

  • it uses multiple anvil-extras modules: animation, messaging, routing, storage, …

  • use the awesome M3 switch with the bell icon to subscribe to alerts for ticket categories and individual tickets

  • it uses OpenAI API create AI assistants to summarize ticket threads, etc. AI assistants are run via anvil background processes.

  • it sends push messages to android/iphone/laptop via firebase

  • it uses anvil user service, and has admin, account, and tenant users, with a role system for defining permissions

  • it has automatic workflows that use AWS step functions and visualized by GraphViz with click events on the boxes so you can see data for each step.

  • it has a QR code designer (which will look better after I M3 it) where you edit css-properties and see the design change in real time, all with anvil and a tiny bit of js. The design is then exported to pdf using anvil pdf export, and unique QR codes are thereafter made with that design. The below design is for a sticker that the customer use in their pool cars, on EV chargers, etc.

  • it uses MapBox and zoom events to filter on buildings. When a janitor goes to a building, he clicks the GPS icon, the map zooms to his location and he sees the open tickets for that building.

Sorry for the long reply, there were just so many things that came to mind once I started thinking about what goes into the app! I hope it serves to show that there is no limit to what you can do with Anvil.

6 Likes

The segmented button is actually not in M3 yet. I hope they will include it soon. The one you saw is one that I made. I can share it if there is interest for it.

4 Likes

We have build neXus - an app to help with sustainability reporting in the EU based on CSRD.

5 Likes

Tell us more! What does it do? Does it have a website? How long did it take you to build? Do you have any stats or cool facts about who’s using it?

Good to know someone finally figured out push notifications on both iOS and Android! It seemed we were at a dead end with some people’s attempts

2 Likes

Yes the website is next.nexus. Organisations larger than 250 employees have to report due to the european sustainability reporting standards - a quite large compendium of specific rules and procedures. A lot of chartered accounts do the job with spreadsheets: tedious, error-prone, time-consuming.
neXus gives you a framework for carrying out all the necessary tasks. Starting with the double materiality analysis and the stakeholder dialogue through to deriving the data points to be reported from around 1,200 data points and culminating in a sustainability report.

3 Likes

The Crating App handles the final stages of the panel lifecycle:

Workflow Overview

  1. Data Input:
    A new release—a list of panels—is fed to the Crating App via HTTP endpoints by another Anvil app or an Excel VBA macro.
  2. Shipment Preparation:
  • The Shipment Manager calculates the number and size of crates required for the shipment.
  • Panels are assigned to crates in two ways:
    • Manual Assignment: Dragging panels from the DataGrid on the left (list of panels) to the DataGrid on the right (list of crate layers).
    • Automatic Nesting: Clicking the Nest Panels button automatically creates crates, adds layers to them, and populates the layers with panels.
  1. Departmental Actions:
  • Assembly Department: Marks panels as ready.
  • Crating Department: Marks panels as crated when added to crates.
  • Shipping Department: Uses the list of crates to calculate truck capacity and allocation.

Features

  • Graphical Visualization: Displays a dynamic representation of each panel layer in a crate.
  • Automated Notifications: Sends emails to the next department when a task is completed.
  • Reporting: Generates monthly wood usage and other operational reports.
  • Wood Inventory Management: Tracks and manages wood supplies.
  • Shipping List Printing: Produces a shipping list for each truck.
  • Panel Tracking: Shows when and by whom each panel was added to a crate.
  • Concurrency Management: Warns users if someone else saves changes to the same release they are editing.

Key UI Screens

  1. Main Menu:

  1. Main Form:
  • Top: List of crates
  • Left: Uncrated panels
  • Right: Panels in the selected crate

  1. Release Versions:
    A detailed log of panel assignments, showing actions like panels added to crates and their readiness status.

image

  1. Truck and Crate List:
    Displays the crates loaded onto each truck.

  1. Concurrency Warning:
    Notifies users if another user saves changes to the same release.

image

Technical Details

Architecture

  • The app primarily manages UI logic on the client side, while server-side logic handles database operations, including versioning when users click Save.

Release Class

  • Serialization: The release.save() method serializes the object on the client side, sends it to the server, deserializes it, applies versioning, and saves it.
  • Nesting Logic:
    • release.nest_crate(): Adds layers to crates and assigns panels to layers, adhering to constraints like maximum weight, size, height, or panel type.
    • release.nest_all_crates(): Creates crates, nests panels, and executes nesting asynchronously using a timer to update UI progress, as processing hundreds of panels can take time.
  • Development & Testing:
    • Designed to function seamlessly on the client, server, or locally during testing.
    • Debugged entirely in PyCharm for nesting logic and graphical layer representation, enabling efficient iteration before deploying the app.

3 Likes

I use the implementation from this post for push notifications—no innovation on my part: Push Notifications Dependency - #26 by zielinski.mark

On Android and on my test iPhone it works. But it didn’t seem to work on some new users’ iPhones, so I’m not sure if something changed for IOS.