Membership Site: Laravel 5 & Infusionsoft & Push Notifications - laravel

I'm building a membership site for a client who uses the Infusionsoft CRM for product (course) subscriptions and payments.
They're currently running the membership site on Wordpress with the Memberium plugin handling the Infusionsoft integration, but they're moving away from Wordpress.
The Infusionsoft-related functionality I'm looking for:
Users sign-up / opt-in via Infusionsoft forms (this is a given)
Credentials get
saved into Infusionsoft (the form handles this)
Users log into the
app with their Infusionsoft credentials
Two-way sync between the app & Infusionsoft (changes to profile / subscriptions / payment info made by the user in the app get saved into Infusionsoft)
Permission levels: Users have limited access to pages after log-in, based on the products they subscribed for (products are in Infusionsoft). i.e.: a user subscribed to the cheapest plan will see content associated with that products, and will have 3 entries in the main nav; but a user who subscribed to the most expensive package will see all the content and will have 5 entries in the main nav. There are 3 membership levels in total.
The memberium plugin handles these (and much more) easily, but I need to have the same functionality outside of Wordpress.
It shouldn't be hard to pull off, as the official Infusionsoft PHP client Library has support for Laravel and there are multiple versions of Laravel 5 Ports of the Infusionsoft PHP SDK on Packalyst.
The non-infusionsoft functionality I'm looking for:
Forum: a proper forum with the ability for logged in users to start threads, comment, etc
Event calendar containing upcoming events, scheduled video releases,etc.
Ability for admins to upload videos, edit content, publish blog post.
Push notifications Android & iOS app versions (packaged Chrome, have the Android & iOS API keys to use for the notifications)
The client is expanding from the UK and going global. I'm thinking of using MongoDB.
So my questions are:
Should I use MongoDB or should I stay away and go with classic MySQL?
Does MongoDB have potential issues with Infusionsoft or Laravel 5?
OctoberCMS vs Laravel Backpack? Both handle the blog posts, the content uploads & the calendar out of the box.
Are there any known issues with Infusionsoft integration & OctoberCMS running a modified Laravel?
Push Notifications? Should Infusionsoft handle these or the app itself?
Suggestions for packages? I saw quite a few things on Packalyst for everything.
I haven't used Laravel since 4.2 and I've never done anything with Infusionsoft.
I did some reseach but the results were mixed in terms of Infusionsoft integration and most of the results were for older Laravel versions or the older version of the Infusionsoft API.
Sorry for the TLDR post, it's my 1st question on StackOverflow :)
Any insight to Infusionsoft integration & Laravel 5, or suggestions for packages to use would be welcome :)
Particularly for the forum & the push notifications (in case those are not handled via Infusionsoft).

Related

Proactively Install / Push Apps in Teams for Multiple Users

I have a query regarding, How to Proactively Install / Push Apps in Teams for Multiple Users ?.
We have added our Bot Application as part of Teams App Catalogue, and I followed below document regarding Manage App Setup Policies in Microsoft Teams to install apps:
https://learn.microsoft.com/en-US/microsoftteams/teams-app-setup-policies?WT.mc_id=TeamsAdminCenterCSH#install-apps
Though above link clearly states that it automatically installs apps for users, but when we follow above link it only adds application as part of Teams App Catalogue.
So just wanted to know that does installation here mean, only adding in App List and not installing as such on user machine ?.
The other method we can follow is to create a custom script and use Graph API queries as described in below link:
https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages#proactive-app-installation-in-teams
So wanted to know as per Microsoft, what is the recommended way of Pushing Bot App to multiple users on MS Teams. Can this be handled with Teams Admin Center ?.
Any help or guidance on the approach to achieve proactive app installation in Teams would be great.
Thanks In Advance!!!..
Both of these approaches should work fine. App Setup Policies is the easiest though as you don't need to write any code, but be aware that it can take a while for the policy to apply (I think up to a day or even two). There's a way to force it to update, I think if the user signs out of Teams entirely and signs back in.
I tried with Teams Admin Center and tested 2 scenarios:
1.) For User Already Logged In
2.) For New User Logging the First Time
The policies take time to be applied / be effective for users (not immediate). In my testing, I logged in after ~2 hours for New User and waited ~2 days for already logged in User. We have to test the same for your respective environment. Also these are not Standard Timelines, and we have Test in our environment accordingly.

Microsoft teams app: How to maintain versioning of backend services

We have developed a app for Microsoft teams and our first version was published on the app store. We are now working on the next version. However we are not sure how we have to submit the new version for team store review without impacting the existing users. For instance, some of our bot commands will behave differently in the new version. If we have only one backend instance running, when we submit it to store team for review we will impact the experience of existing production users as well.
Ideally we would follow a blue-green approach to release new features to selected customers, but in this case we are not really sure how and where to differentiate requests coming (mainly through bot communication, since we can add a app version header in web communication) from multiple versions of the app. We thought of creating new set of resources (app registration, bot channel registration etc) on Azure portal but I guess that would be treated as a new app and not a version update.
Any ideas or pointers on how to achieve this would be of great help.
This is a good point, I don't think there's anything out of the box to deal with this. What you've suggested might indeed be the best way:
create new app registration & bot channel registration, with temporary name (e.g. MyBot2)
update manifest to use new bot, and submit for store approval with this manifest
once approved, and app is live (you can schedule a go-live time when you submit the app), rename both bots (original to MyBotV1 or something, and MyBot2 to MyBot)
In any case, I'd work with the app submission team around this, they're very helpful and engaged.

Add cart functionality to API or to Client?

I am creating an e-commerce API using the Django Rest Framework. The API will handle the following areas:
Databases
User Registration
Permissions
Orders/Payments
There's still one area in which I'm not quite sure how to implement in my project. It's the cart functionality. Would it be better to implement it on the client-side (ex: React/Ember) or on the server-side (i.e. API)?
One scenario that confused me is if the user is logged in in different platforms (ex: Website and mobile app). I want the user to have the same cart on mulitple platforms.
In that particular use case, if you want cart persistence then it must be backend. The reason for this is one being able to have a single source of truth. The phone app and the web app cannot talk to each other unless they have some sort of "common ground" between them.
That's where the API comes in. It will allow both ends to speak to each other by having the API as the single source of truth. See my terrible diagram for a visual.

Sending web push notifications from Laravel

I have a website running Laravel in the back-end, where users can create reports for other users.
When the report is created I would like to send a push notification to recipient user's desktop.
Do I need to use services like Pusher, OneSignal?
Any useful site with examples would be appreciated.
Your question
You could use Pusher, Redis/Socket.io, Pubnub, etc. Which one to use? well, this is more an opinion-based question.
These services broadcast events, then in your client apps (like your web front-end) you configure the client-side libraries of the service you choose to subscribe (to channels) and listen to those events. The documentation explains it better.
Examples/tutorials
Pusher
This is a tutorial published by the Pusher team.
Redis/Socket.io
This one
is a Laracasts series about this.
Just google.
Update
There is a Laravel-specific alternative, a package created exclusively for Laravel:
Laravel WebSockets
This is the post talking about the package and its inner working.
This is the repo.
Here you have the documentation.
If you like to show Native Desktop notification then i would suggest Web Push notification. In this way once user subscribed to push notification ,they will get real time notification and does not need to be on your website.
https://github.com/laravel-notification-channels/webpush

Webhook when new domain installed my app

I'm working on GSuite application and wondered how my backend can be notified when new domain admin installs my app?
You can use the license notification api to retrieve a list of current installs. https://developers.google.com/apps-marketplace/v2/reference/licenseNotification/list
After installation the user will probably start or setup your app. You could add your own webhook notification when the user goes through this First Run Experience. (This is what we did)
There is another thing you might be able to pull off: As far as i know, an event is fired to Google Analytics on install. Maybe you can add an alert/webhook in Google Analytics.
However, i was having some problems with the events to show up in GA in the first place.

Resources