todd
todd
NNovu
Created by Saruchi on 3/20/2024 in #💬│support
Is there a V0.23.0 of Novu nuget package? for Global preference
@unicodeveloper @dr.really I am currently trying to tame all the version differences such at new versions are no longer difficult to track. I have created what I see as a temporary branch https://github.com/novuhq/novu-dotnet/tree/todd/versioning-differences. Please take a look. chore: tame versioning approach - add local dockerfile with sensible defaults - add openapi diff to see differences between versions - add refitter (script) for auto generation of C# stubs It seems to me that we need to make some decisions: * versioning (revisiting linking back to the production releases in a sensible way) * what version should we back port and make as releases (potentially 6 releases to do—easier than it sounds) * auto generation seems the wrong decision (look at the code) but allows for "easier" updates but really isn't idiomatic Note sure where/how is the best way and what support people want to provide. I have limited time but realise this is a problem for other people if I was them I would pretty annoyed/disappointed.
20 replies
NNovu
Created by rp1303 on 10/26/2023 in #💬│support
self
I am wanting solutions/hosting that are/is transparent (understandable and explainable), automate-able (into a continuous build pipeline but be usable from a local dev machine) and economic at scale (from free in local dev to reasonable price through environment and in the large in production if needed). I'm sure, say, DevOps has this well defined somewhere and more elegantly said. If you go back to old school computer science like Fred Brooks (and DeRemer & Kron), it is based around models of programming in the large. It feels to me is that "trend" (aka trendy) is to provide hosting and development approaches which tend towards programming in the small—in other word, glue code as the primary mode to create systems. In terms of command line, yes in some environments and in some environment never as standard but possible as fallback. Your Hetzner VPS looks to be regionally based so may not solve multi-zone implementations—if that was the case given I supply services to the Pacific, it probably isn't so good! So the answer is it depends on which constraints you want to subordinate too—and if you subordinate them all means you have missed the one that makes the others a group of constraints themselves.
20 replies
NNovu
Created by Saruchi on 3/20/2024 in #💬│support
Is there a V0.23.0 of Novu nuget package? for Global preference
Too many and are documented in this ticket https://github.com/novuhq/novu-dotnet/issues/72#issuecomment-1817936788 (which is now further out of date)> I will say that the problem was created by me. I moved the library away from code generated stubs to make the library operate C# idiomatically. It is better to work with but more work to maintain. Also, what I have seen is few are willing to write tests. I have been meaning to do upgrades since Jan and have been struggling to get the time. Aplogies to those that it affects but I am not the only maintainer 🙂
20 replies
NNovu
Created by rp1303 on 10/26/2023 in #💬│support
self
I am going to be a little bold here. Writing a guide is probably the wrong direction because it should really be a deployment scripts via tooling into environments. I know that there needs to be some documentation. My problem was the subtleties of making it work that IMHO most documentation can't cover. I have and am still happy to share my deployment scripts (but there are not generalised because they are part of my production environment). I deploy via terraform to AWS. However, much is also about the plugging in credentials into my services to talk back to the services. Finally, I am snowed under and still running 0.18 of the project. I am behind on upgrades and am probably still a month out. Have you seen my other pieces and are there specifics you are looking for?
20 replies
NNovu
Created by Saruchi on 3/20/2024 in #💬│support
Is there a V0.23.0 of Novu nuget package? for Global preference
Nope. I haven't made changes since 0.18.x
20 replies
NNovu
Created by Saruchi on 1/3/2024 in #💬│support
Payload JsonObject not getting parsed from Swagger in .net
@Saruchi ps I am holiday and may a little slow to respond
13 replies
NNovu
Created by Saruchi on 1/3/2024 in #💬│support
Payload JsonObject not getting parsed from Swagger in .net
@Saruchi I am sketchy on the differences between the two libraries and have chosen to stay with Newtonsoft/JSON.net generally (and the library uses it and has it registered). I am a little confused because generally (if memory serves me) Payload is outgoing yet you talk about using FromBody which is incoming. Nonetheless, I think you are likely to find that you'll need to register a serialiser for your library because the null is probably just the default response to unknown (rather than error). I am happy to try and work through the issue as the library has made the decision to try and make it easier to work with (rather than a straight code-generation). Would you care to provide a code sample—personally, I would like to see them as tests and can be based on existing ones.
13 replies
NNovu
Created by todd on 11/19/2023 in #💬│support
API versioning
@Zac Clifton that's a shame. In other situations, I have to deal with this too and have tests that detect changes in the API—it is a pain. When you say that you don't have a process to constitute what makes an api update, I can't imagine what the blocker really is! We are talking about that field "version" 🙂 Thanks for the response.
6 replies
NNovu
Created by ISSAM on 11/10/2023 in #💬│support
AWS s3 self-hosted error
@ISSAM I had the same issue and spent too much time figuring it out. However, the terraform that @Pawan Jain pointed you to was written by me and is what I have in production. Getting the IAM perms lined up is the key, along with the CORS. What isn't in this is the IAM for the API that executing the request to generate the URL. I have mine running as a task workload in a Fargate cluster. Nothing looks special. Ping me if you haven't solved it but its a perms issue.
4 replies
NNovu
Created by N01R on 11/15/2023 in #💬│support
Pre-requisites of deploying Novu
@madd you also need widget
11 replies
NNovu
Created by todd on 10/30/2023 in #💬│support
Tenants
@Dima Grossman I would interested to see your example of names for a "tenant" in your usecase—I still think I am missing some point. As you point out, tenancy is about isolation—which is what organisations do. Tenancy in your case doesn't isolate, it provides "overriding part"s (specifics/decorates/alternatives). Yet, the tenant also logically needs to function as a grouping mechanism IMHO—or something else needs to for my use case. As a product, naming is hard (duh, of course). Have you chosen "tenant" because your customers want this or from your team choosing it? As a (development focussed) customer, it seems "wrong" because tenancy is about separation—but you are really used it as association. I understand that I am not the key customer (the paying ones are!) and I wonder what they call the concept? I am happy to talk about it. I have the same concept/problem in my own product and we struggle to name it to. We have called it "overrides" which can be applied when needed. I know its not quite right because people are able to be taught it (instantly) but don't grasp it themselves (generally). Finally, I have raised it at the design level because my sense is that this concept is being coded out usecase by usecase through your product UI (client app) and then surfaced through the private/public APIs. So given I only use the public API its limits are more obvious because a lot of work is being done in the client app to stitch it together. Again, I am happy to discuss what I mean here if you want. Cheers
22 replies
NNovu
Created by todd on 11/8/2023 in #💬│support
Upgrade to 0.21.0 via images—migrations
@Pawan Jain thanks for the response. I am curious as to why you picked 0.19.0 as the starting point for a migration? And the answer doesn't quite give me the information I need in an ops role., My question is more general about a mechanism that runs that migrates databases to the latest (no matter which version you are currently running from --> to). My ignorance are the mechanisms used around mongodb/redis for schema and data migrations. I am happy to be pointed at the code and bootstrapping processes in a production environment (ie with containers). My confusion perhaps lies in that I am surprised that migration instruction process is part of the release notes. I would presume that is part of development setup instructions. Because that information is so specific, I am looking for confirmation that ops doesn't need to do anything as a general case in our deployment pipelines. I hope that clarification gets me closer to an answer! Cheers
3 replies
NNovu
Created by cleopatra on 11/5/2023 in #💬│support
Messages not displaying
FROM the search entered in the message above: To set up a subscriber hash for HMAC in a Novu provider, you need to first activate HMAC encryption for your environment. You can do this from your admin panel's In-App settings page. Next, you'll have to generate an HMAC encrypted subscriberId on your backend. Here is how you can do that using crypto module in Node.js:
import { createHmac } from 'crypto';

const hmacHash = createHmac('sha256', process.env.NOVU_API_KEY)
.update(subscriberId)
.digest('hex');
import { createHmac } from 'crypto';

const hmacHash = createHmac('sha256', process.env.NOVU_API_KEY)
.update(subscriberId)
.digest('hex');
Once you've created the HMAC, you need to pass it to your client side application. The specific method of passing will depend on the type of client you're using. For instance, if you're using the Iframe Embed:
<script>
novu.init(
"APPLICATION_IDENTIFIER",
{
unseenBadgeSelector: "#unseen-badge",
bellSelector: "#notification-bell",
position: {
top: "50px",
left: "100px",
},
},
{
subscriberId: "SUBSCRIBER_ID_PLAIN_VALUE",
subscriberHash: "SUBSCRIBER_ID_HASH_VALUE",
}
);
</script>
<script>
novu.init(
"APPLICATION_IDENTIFIER",
{
unseenBadgeSelector: "#unseen-badge",
bellSelector: "#notification-bell",
position: {
top: "50px",
left: "100px",
},
},
{
subscriberId: "SUBSCRIBER_ID_PLAIN_VALUE",
subscriberHash: "SUBSCRIBER_ID_HASH_VALUE",
}
);
</script>
Or if you're using React:
<NovuProvider
subscriberId={"SUBSCRIBER_ID_PLAIN_VALUE"}
subscriberHash={"SUBSCRIBER_ID_HASH_VALUE"}
applicationIdentifier={"APPLICATION_IDENTIFIER"}>
<NotificationCenter colorScheme="dark" />
</NovuProvider>
<NovuProvider
subscriberId={"SUBSCRIBER_ID_PLAIN_VALUE"}
subscriberHash={"SUBSCRIBER_ID_HASH_VALUE"}
applicationIdentifier={"APPLICATION_IDENTIFIER"}>
<NotificationCenter colorScheme="dark" />
</NovuProvider>
Without subscriberHash along with subscriberId, the notification center will not load if HMAC encryption is active in your In-App provider settings.
9 replies
NNovu
Created by cleopatra on 11/5/2023 in #💬│support
Messages not displaying
No description
9 replies
NNovu
Created by todd on 10/30/2023 in #💬│support
Tenants
@George @Gali Baum thanks for attending to this because I really need it working!—has anyone logged an issue? --------------- May I speak out of turn and without enough context. I see/feel alarm bells ... This discussion requires in-depth knowledge of a pipeline from inside rather than outside. And certainly coding it would—I apologise but haven't looked at the implementation. It feels to me that the 'tenant' domain concept should be cross-cutting/orthogonal—making it a loosely coupled design. It sounds like it has high coupling right in the middle. When I look at tenants, I think of the tenant as merely a tag—and one of others. I can then see that some tags are able to also be mapped to decorators (which in this case is to override providers or settings). My sense is that tenants is going to remain essentially difficult to test, maintain and, importantly, extend in its current form—the tests and changes required for tenants will probably provide/disproved if this is the design approach. From the outside, I have really struggled with the tenant as a domain design concept and how it fits with the other parts of the domain (particularly because organisation is really the tenancy isolation I would expect). Finally, I may be right off the mark and if so please let me know so that I can look at the code and stop making wild comments! Thanks (for patience if you have read this far) 🙂
22 replies
NNovu
Created by Bwell on 11/2/2023 in #💬│support
Brand
@Bwell Self-hosted? If so, my guess: you need an S3 bucket setup (with correct permissions). You demo should have shown the Network traffic in dev tools. Note: the design here is that logo is returned to the server as a URL. There are threads here and documentation that have solved this. I would use the search on the novu site because it looks through discord and documentation site for solutions/comments.
4 replies
NNovu
Created by Bocorbojon on 11/1/2023 in #💬│support
Self-hosted isntance of mongodb using 200% of CPU when sending ~1500 notifications through topic
@Bocorbojon hey, there is another thread that covered this issue off too if you can find it. Sorry don't have it at hand
8 replies
NNovu
Created by Bocorbojon on 11/1/2023 in #💬│support
Self-hosted isntance of mongodb using 200% of CPU when sending ~1500 notifications through topic
@Zac Clifton where's that one documented? It isn't in the .env file in the deployment folder https://github.com/novuhq/novu/blob/d4533be0e0184a1c7764db0df68657dd5fdfd730/docker/.env.example Can I note that that is the default setting. https://github.com/novuhq/novu/blob/d4533be0e0184a1c7764db0df68657dd5fdfd730/libs/dal/src/dal.service.ts#L11
8 replies
NNovu
Created by todd on 10/30/2023 in #💬│support
Tenants
No description
22 replies
NNovu
Created by todd on 10/30/2023 in #💬│support
Tenants
@Gali Baum Back to point two that the tenant is created. My testing doesn't bear out that result. For breveity (hope that's okay). I POST on events/trigger adding the tenant
"tenant": {"identifier": "YYYY", "name": "HHHH", "data": {} }
"tenant": {"identifier": "YYYY", "name": "HHHH", "data": {} }
and get response {"data":{"acknowledged":true,"status":"no_tenant_found"}}
22 replies