A community platform for everyone

Oase is a new digital tool created to support your community. It's where you can communicate and organise your work.

This is our changelog.

Brought to you by Anders Lemke-Holstein

Add expenses to your oases

Doing stuff together is still what life is all about. You can now use Oase to keep track of your expenses and settle what you owe.

Achievements

  • Adding expenses
  • Showing your balance
  • Using the generated payment plan to settle what you owe

Add events to your oases

Doing stuff together is what life is all about. You can now use Oase to make sure that everybody in your community knows when and where you'll do it.

Achievements

  • Adding events
  • Editing events
  • Showing events in the oase
  • Showing past events in the tab

Add polls to your oases

Making decisions, especially about when to meet, can be difficult in larger groups. Use polls to coordinate.

Achievements

  • Adding polls
  • Answering on polls
  • Showing all polls in the tab

Animation

Kolla Kolla has helped us create the joyful animation that you will meet in our app.

Achievements

  • Animation on app splash screen
  • Animation for oase overview (also called the hub).

Logo, font and colors

Katinka Bukh has helped us create this wonderful logo, and find our font, Gimlet Sans. Both are inspired by the superellipse which we find to be a very interesting shape.

We're really excited about it, and believes that our core values (which Katinka also helped us identify), is really well represented in the identity.

Our core values

  • Generous
  • For everyone
  • Safe
  • Honest
  • Motivating
  • Simple
  • Activistic (Engaged?)
  • Fun

Projections: How we keep the client updated

I'm getting really happy with the abstractions for keeping the client up to date with new data.

I call them projections. On the server, a projection has a schema, a processor and a channel.

The schema knows what is persisted about the projection in the database. The processor knows how to populate the database from the domain events, and broadcasts messages to clients when appropriate. The channel handles the connection to clients, including authorization and DTOs.

It's now really ease to use in the client:

const [oase] = useProjection(`feel:oase:${oaseId}`);

Now just use oase, and trust it will be updated real-time whenever something happens.

Phoenix Frameword: The real time dream

Using Phoenix Frameword is really nice. The abstractions around Web Sockets is really is, and it just works.

I've included their Javascript library in the app, and that's basically it. Sockets and channels will reconnect when needed, and I don't have to worry about keeping the connection to the server alive.

Initial commit

And we're off. The dream is to build the go-to platform for communities.

Our (naive) plan is to create a product of high quality, and then let the network effect distribute it.

The stack

  • Elixir backend
  • React Native app (iOS, Android and web)