jordiee

jordiee

AppDoctor: proactive support (SaaS in development made with Elixir)

https://medium.com/appdoctor/what-is-appdoctor-5cceaedf7a05

AppDoctor backend is built completely in elixir using all sorts of otp goodness.
Examples are authentication is using replicated ets tables, AppDoctor tests run in DynamicSupervisor genservers isolated from each other. We are really excited to be done(until changes are needed) with the backend and continue work on the front end for our 2019 launch. We will be moving users into closed beta shortly and I would love feedback from my favorite internet forum. Any questions on the elixir backend feel free to ask away!

First 10 of 20 Posts Switch mode

jordiee

jordiee OP

Oh also feel free to email beta@appdoctor.io for when we let the next round of users into closed beta!

AstonJ

AstonJ

Nice one Jordan :slight_smile:

I know it’s not live yet but I went to appdoctor.io and it says Request does not contain account subdomain ..might be worth putting a holding page up for nosey parkers like myself? :lol:

jordiee

jordiee OP

You are probably correct. I will throw up something that redirects to the closed beta register page this weekend! But your more then welcome to poke at the api a bit :stuck_out_tongue:

If you had an account you would be able to do something like

google-com-ACCOUNTID.appdoctor.io and it would proxy requests to google.com

jordiee

jordiee OP

We are excited to start our closed beta!

Below are 10 beta codes people can use to check it out / give us feedback.

xqbkTkFW
5kv7ZAzF
6ubnpUNX
KX2ActlP
W6r7aOz8
VSsRAGEb
K4PI5q35
yOiTKvmH
2xdsdpkb
LLubEu85

https://app.appdoctor.io/register

Why are we doing a closed beta during development:

medium.com/appdoctor/closed-beta-af448039c3b7

Our public issue tracker:

https://github.com/AppDoctorIo/appdoctor-issue-tracker

Additional helpful information:

medium.com/appdoctor/appdoctor-search-e12a37a91523

medium.com/appdoctor/appdoctor-assertions-87d64d8874f9

If you come across any issues or have any feedback please post to the github issue tracker or email us at support@appdoctor.io

If you know anyone interested in the the perks that come with giving us feedback during our closed beta period please have them email beta@appdoctor.io

We will continue to update the codes after they have been used.

jordiee

jordiee OP

Post on what we are working towards with AppDoctor Tests:

https://medium.com/appdoctor/appdoctor-tests-f9325cb4e9e6

jordiee

jordiee OP

Tests suites run inside dynamically supervised genservers. That way we can have long running tests that share state in between steps!

jordiee

jordiee OP

AppDoctor StatusPages are now in closed beta. You can use any of the codes above to try it out(would love the feedback).

If you have a project or application that you need a live automated StatusPage give it a try.
(along with all the other things it does)

Take a look at our example status page that we use to check our own applications health!

https://status.appdoctor.io

Materialized views + ecto raw queries make for a very speedy experience even for the complex aggregations required for an AppDoctor Status Page.

Edit:
I also entered in a local startup competition and would really appreciate a vote!

https://5x5night.com/ideas/detail/appdoctor

jordiee

jordiee OP

Updated beta codes left!

xqbkTkFW
VSsRAGEb
K4PI5q35
yOiTKvmH
2xdsdpkb
LLubEu85

And of course to keep this elixir related here is a picture of a standard users supervisor tree in appdoctor.

under each user account:

Account GenServer: Used to collection some statistical information/ route request data to to the correct dynamic GenServer. This also handles starting bin servers under the bin supervisor.

Bin supervisor: This starts and stops GenServers for any request data and tracks statistical data like % of failed requests to an endpoint over X period of time. After not receiving any new messages after X time it stops itself.

Bin cleanup GenServer: handles rolling deletes based on account level. So for example free tier will allow 5000 requests per bin. It tracks this count internally and then runs the sql to delete when needed.

Rules GenServer: this GenServer gets passed requests and analyzes them against any rules stored it its state. It handles sending emails and updating the database when a rule is hit.

test GenServer: this is the place that contains all the tests state for a users. So that when a test is ran it does not need to hit the db. It also handles internal intervals of running tests using send_after.

test execution supervisor: when a test is running it can be long running so each test for an account is started in its own GenServer and handles each step of the test by sending messages to itself.

Last is a task supervisor that is used to start any async tasks and not have them crash the process they were started in.

AppDoctor uses a unique way of working distributed that has been working quite well so far and GenServers fail over across servers. I welcome any questions on the complications I went through setting this up and some of the awesome benefits gained through it as well!

jordiee

jordiee OP

Super excited to finally have the landing page up at:

https://appdoctor.io

Hopefully it explains everything better then I have previously. I will have some feature blog posts about the rules engine appdoctor uses because ast parsing made everything so much easier to handle!

jordiee

jordiee OP

We officially launched today!

https://appdoctor.io

I am super grateful for all the help I got both here and on the elixir slack group!

An honest look at launching a bootstrap startup

Where Next?

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 91561 914
New
byu
@chrismccord : I just saw the Extract AGENTS.md from Phoenix.new into phx.new generator commit to the phoenix project. My initial shotgu...
New
arcanemachine
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
AstonJ
Just a general thread to post chat/news/info relating to AI/ML stuff that may be relevant for Nx now or in the future. Got anything to sh...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
alexslade
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog It says that Fly is going all-in on sprites, which is a worry ...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
bjorng
We want to introduce a new native datatype to Erlang: native records. Although replacing all tuple records with native records is not our...
New

We're in Beta

About us Mission Statement