Giter VIP home page Giter VIP logo

mattrax's Introduction

Mattrax Logo

Mattrax MDM is a full device management solution
for Windows, macOS, iOS, Android and Linux!
mattrax.app »

Discord · Website · Docs · Twitter

Warning

The repository is under heavy development and parts of it are not ready for public use.

Overview

This repository is a monorepo of all Mattrax projects.

The components are:

We mainly use the following technologies:

Contributing

Check out the guide in CONTRIBUTING.md.

mattrax's People

Contributors

oscartbeaumont avatar brendonovich avatar ilynxcat avatar

Stargazers

jake avatar Darren Baldwin avatar Nurullah avatar Matt avatar  avatar  avatar Scott Wey avatar  avatar  avatar  avatar  avatar Nikola Hristov avatar

Watchers

 avatar

Forkers

abrazzaqsk

mattrax's Issues

Set default tenant

Each account should be able to say the order they wanna be sent to tenants they have access to when hitting the / redirect or logging in on a new device.

This should probs be a dropdown on the account page.

Masquerade as user

Allow a Mattrax superadmin to "become" another user for support purposes.

Allow the tenant to enabled/disable if we are allowed to do this as an extra layer of security.

App Store API's

  • Apple store API
  • Windows store API
  • Android store API

Right now just throw em on the Applications page with no care for styling.

Random Small Bugs

  • The / route is always waiting for a server response. It should pull from localStorage if available.
  • Tenant switch dropdown menu is a different width than trigger button
  • Page overflow (x & y) shrinks sidebar (shrink your browser to be really small and look how it acts)
  • Fix sidebar flex - If content max length it squishes the sidebar - Open Applications page
  • Forbid mobile support (it's not gonna work well for now and I don't think it's important atm) #118
  • Removing all non-nill assertions
  • Disable sidebar and "Create Tenant" button when the auth comes back with an error. Right now it's just a toast and things silently go to crap.
  • "Create tenant" should redirect to / within the tenant, not keep the current relative page #142
  • onError handle/toast not firing for mutations
  • Disable mutations when offline (does Tanstack Query do this or do we need to).
  • Ensure Vercel build and local CLI checks for env vars (cause I don't think it's working atm) so the function crashes at runtime not startup/build time.

PWA

  • Turn Mattrax into an installable PWA.
  • Design a page when launched offline
  • https://vite-pwa-org.netlify.app/guide/
  • Reload toast when updates requires + automatically update on link press (turn back into hard like like Katt showed in one of his tweets)

Enroll process

  • Windows MDM protocol enrollment

Flow A

Windows Federated enrollment.

Windows Federated enrollment:

  • Webview renders endpoint defined in Windows MDM payload.
  • The endpoint instantly redirects to auth provider configured from the current tenant.
  • Callback URL that fires the form like the current /Auth.svc endpoint.

Flow B

Blocked on #18

TODO:

  • Authenticate the user
  • Loading indicates cause with Intune this process is slowwwwwww.
  • Detect the OS and customise process.
  • Guide the user through what to do on the device

Skew protection

  • Handle Vite chunk loading error and do a force reload of the page
  • Detect a new deploy (using headers and API) and start a notification to reload

Vercel do offer this as a feature but I think building it into the product makes more sense also we might not stay with them.

Full authentication

  • Email code authentication like Slack w/ support for passkeys.
  • Use the cookie trick for checking auth - #161
  • Session management - automatic renewal, expiry, show in account settings (we can do this later if you want). - #162
  • User signup flow

Fix typesafety holes in MS Graph

The types for my custom MS Graph API bindings are basically always wrong. Fix this so we can actually use Typescript properly.

We can't use the existing SDK because it doesn't seem to like running on Edge Functions (won't be caught in dev though).

Developer Pricing

Allow paying for Mattrax's API without the dashboard. This would be for "Mattrax as a Platform" which can be used to build over MDM products.

Multiple MDM Intune accounts

Have an option for Mattrax employee's to deploy into a separate Intune account.

So we can use the Microsoft dev tenant, and not pay for devices used for testing.

(this could also be reused to allow managing customer's Intune tenants but I don't wanna offer that cause we will move off Intune one day).

Transfer Tenant Owner

Ensure it only moves over after the new owner has accepted the change.

Allow cancelling + show something in settings while we are waiting for them to accept.

Send email.

GitHub Workflow for tsc

We don't block Vercel deploy on it but should block PR's (but obviously with the ability for an administrator override if needed).

Manually link users

Administrator should be able to say two users (coming from OAuth provider) are the same and their resources should be copied over/kept in sync.

Might be useful if they recreate the user externally or something.

Non-JS error page

Show a nicely styled page when a user tries to access the dashboard without JS enabled.

Remember last active tenant

When you reload the page you can end up on another tenant (for the / redirect).

Can we make it store per-tab but with a global default from the first/last tab.

Tenant Auth Providers

Tenants will be linked with an authentication provider. This will be used to authentication the end-users to the MDM server when enrolling a device or using other self-service features.

For now I think we should just link Entra ID and deal with Google Workspaces in the future.

TODO:

  • Grant the auth provider access using OAuth
  • Store the linked tenantId into the DB
  • Sync users from the auth provider (through in a Cron and copy the subscription code from #5 )

Tanstack Query

  • Remove my fun experiment.
  • Move to Tanstack Query
  • Tanstack Query Devtools (lazy load when in dev or localStorage key set)
  • Hook up the Broadcast Channel thing for sharing state between tabs
  • Custom wrapper hooks that take in an Hono query like the createResource thing does.
  • Toast when network offline
  • Toast when network error (as long as we are online, ignore them if offline)

What is the default stale time and should we change it?

Logo

Come up with a logo for Mattrax that I don't hate.

Deploy progress

Show it as it deploys to each device, similar to what Planetscale does with deploy requests.

Real time

Real-time updates to Mattrax resources.

This will make the product way nicer to user as administrators don't wanna be making decisions on outdated data.

Vinxi/Solid Start bugs

Vinxi:

  • Remove /manifest.js from being injected when it's empty
  • Ability to serve from CDN but with function using my Vercel hacks
  • Fix vite-tsconfig-paths bug
  • Fix vite-plugin-html bug
  • Vinxi extend vite.config.ts option to avoid my complicated loader
  • Using import in a function does not lazily load the code.
  • Why does landing have a wasm bundle? We don't need it!!!!!

Feedback button

We need to make it easy to give feedback similar to what SD has.

Stripe

  • Hook Stripe up to tenant pages (use the external Stripe billing management portal)
  • Prorate billing with Stripe? We are gonna bill by devices for now so how do we calculate usage?
  • Stripe panel show next billing date and amount due.
  • Also show updated number of billable devices for the current period and cost per device

OpenAPI

Taking a page outta Cal.com's book we should open this platform up to allow other MDM vendors to build on it.

Delete Tenant

Button in tenant settings, delete all associated data.

Require the user to enter the full tenant name and disable copy and pasting into that field if possible.

App Router

Restructure the repo around the config-based router.

Copy a structure similar to Brendan's app router in Spacedrive and document/lint the convention.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.