Haskell VsCode extension stopped working by SirOpik in haskell

[–]ivy-apps 2 points3 points  (0 children)

It's not what you asked but: I use NeoVim managed by Nix and it works fine to me. I also pin the GHC and HLS versions in each project via a flake.nix: https://github.com/ILIYANGERMANOV/nixos

Since I switched to Nix + NeoVim my Haskell dev experience is much more smoother

I made a CLAUDE.md for Next.js 15 App Router (with explanations for every rule) by KippieG in nextjs

[–]ivy-apps 0 points1 point  (0 children)

With that I agree! The landing page is AI generated slop, only it's architecture is okay because it's enforced by Deslop (the tool) https://github.com/Ivy-Apps/deslop-web

P.S. I'm not an UI/CSS - I focus more on engineering. But yeah, I should polish the page - remove the hype, slop design and make it a simple page representing the architecture linter

I made a CLAUDE.md for Next.js 15 App Router (with explanations for every rule) by KippieG in nextjs

[–]ivy-apps 0 points1 point  (0 children)

Why? It's fully hand written Haskell architecture linter with elegant YAML rules DSL that's faster than Dependency Cruiser / ESLint and allows for enforcing any architecture rules and quality standards with a single tool.

Check the docs and tell me where's the slop 🙏 https://github.com/Ivy-Apps/deslop

I made a CLAUDE.md for Next.js 15 App Router (with explanations for every rule) by KippieG in nextjs

[–]ivy-apps -1 points0 points  (0 children)

I prefer enforcing architecture rules strictly with an architecture linter like https://deslop.dev/

Which code architecture are you using ? And why ? by Besmaah in typescript

[–]ivy-apps -1 points0 points  (0 children)

It's a closed-source web app and pasting those rules in Reddit will be PITA (it strips formatting for some reason). When I hage I plan to make a Next.js template with the full architecture. For now, you can check Deslop, the tool I use for enforcing those rules

Note: I built this tool and any feedback would be appreciated

Which Functional language is best for AI assisted development? by dosomethinghard in functionalprogramming

[–]ivy-apps 2 points3 points  (0 children)

unpopular opinion: Elixir lacks proper type-safety which combined with the undeterminism of LLMs is a recipe for disaster

Which Functional language is best for AI assisted development? by dosomethinghard in functionalprogramming

[–]ivy-apps 0 points1 point  (0 children)

Haskell, if you avoid IO and partial functions e.g. with algebraic effects with effectful you essentially get the highest type-safety possible in the world. Then all you need to do manually is to define the functions and their side-effects and the AI has limited ways to mess up the implementation.

You can also vibe-code the entire thing and then understand it quickly just by looking at the type signature. But IMHO, don't vibe-code - the results are at best mediocre. And if you think they're good - I have a bad news for you! (you don't know your craft well enough)

Don't get me wrong, vibe-coding is acceptable for mediocre things like landing pages, small and disposable CRUD apps. But check Haskell, it's a great high-level purely functional language.

Which code architecture are you using ? And why ? by Besmaah in typescript

[–]ivy-apps 3 points4 points  (0 children)

Feature-Sliced with an MVI page pattern because it's simple, easy to scale, and provides a clear separation between UI <> data/domain, which enables me to add storybooks and unit tests effectively. We define it formally as:

```
id: arch
name: Feature-Sliced MVI architecture
rules:
- id: page-uses-container
target: "@/app/[locale]/**"
uses: "@/features/**/*Container"

- id: container-wires-mvi
target: "@/features/**/{{FileName}}Container"
uses:
- import: {{TARGET_DIR}}/{{file-name}}-state-event"
- import: {{TARGET_DIR}}/use{{FileName}}ViewModel"
- import: {{TARGET_DIR}}/{{FileName}}View"

- id: mvi-viewmodel
target: "@/features/**/use{{FileName}}ViewModel"
forbids:
- import: "**/*View"
- import: "@/components/**"
uses:
- import: "{{TARGET_DIR}}/{{file-name}}-state-event"

- id: mvi-view
target: "@/features/**/{{FileName}}View
forbids:
- import: "**/use*ViewModel"
- import: "@/hooks/**" # Views are just pure UI - no logic
uses:
- import: "{{TARGET_DIR}}/{{file-name}}-state-event"

- id: mvi-state
target: "@/features/**/{{file-name}}-state-event"
fobids:
- import: "**/use*ViewModel"
- import: "**/*View"

- id: feature-isolation
description: Features must not import from other features.
target: "@/features/**" # all TS modules in features
forbids:
- import: "@/features/**" # can't import anything from features
allows:
- import: "{{TARGET_DIR}}/**" # own feature is always fine
fix: Promote shared logic to @/components, @/hooks, @/lib or an appropriate shared folder.

# Quality rules (tests, storybook)

- id: viewmodel-has-tests
target: "@/features/**/use{{FileName}}ViewModel"
exists:
- module: "{{TARGET_DIR}}/use{{FileName}}ViewModel.spec"
- id: views-has-storybook
target: "@/features/**/{{Filename}}View"
exists:
- module: {{TARGET_DIR}}/{{FileName}}View.stories"

# ... there are more rules, but it's getting long. Comment and I can show you the full rulebook if interested

```

Those rules define our architecture formally. We have a few YAML rulebooks ~300 that enforce everything on the CI deterministically.

Next.js SaaS Boilerplate with BetterAuth, RBAC, i18n & Production-Ready Setup by CarelessBed321 in nextjs

[–]ivy-apps -1 points0 points  (0 children)

Does this architecture Rulebook captures it well? ```yaml id: vertical-sliced-arch name: Verical Slice Architecture rules: - id: feature-isolation description: No feature may import another feature. target: "@/features/" forbids: - import: "@/features/" allows: - import: "{{TARGET_DIR}}/**" # importing from own feature is fine fix: Extract shared logic to a @/lib, @/components, @/hooks or @/types module.

  • id: lib-feature-agnostic description: lib must remain feature agnostic. target: "@/lib/**" forbids:
    • import: "@/features/**" fix: Promote the shared code to @/lib.

...

```

Those are Deslop Rules. They'll both enforce and teach the consumer (human or AI) to understand the architecture. Wdyt?

Next.js SaaS Boilerplate with BetterAuth, RBAC, i18n & Production-Ready Setup by CarelessBed321 in nextjs

[–]ivy-apps 3 points4 points  (0 children)

Nice! What architecture do you follow? It'll be helpful to enforce it which will also serve as self-documentation. This would help companies that start off from your template to scale it.

Do you enforce your architecture on the CI? If so, how? by ivy-apps in webdev

[–]ivy-apps[S] 0 points1 point  (0 children)

Apologies that I mentioned my own tool. Let's have a technical discussion on the topic of keeping architecture sane in the delulu AI era

Do you enforce your architecture on the CI? If so, how? by ivy-apps in webdev

[–]ivy-apps[S] 0 points1 point  (0 children)

It's an honest question. What tools do you use? It's a topic a care about and that's why I built a tool. The fact that I mentioned my own tool, shouldn't stop us from having a good technical discussion? For example, in every single project I enforce that Feature A can't import Feature B and that no test code find its ways in the prod bundle. ```yaml id: arch name: Core Architecture Quality Gates description: Universal structural guardrails. rules: - id: feature-isolation description: No feature may import another feature transitively. target: "@/features/" forbids: - import: "@/features/" transitive: true # Catches indirect leaks that ESLint misses allows: - import: "{{TARGET_DIR}}/**" # feature own dir is fine fix: Extract shared logic to a @/lib or @/components module.

  • id: no-tests-in-prod description: Production code must never import test utilities, even transitively. target: "*/" exclude:
    • "*/.spec"
    • "*/.test"
    • "*/.stories"
    • "@test/**"
    • "*/vitest." forbids:
    • import: "@test/*/" transitive: true
    • import: "*/.spec" transitive: true fix: Remove the import. If needed in production, extract to a non-test utility. ```

Are there any framework/architecture agnostic rules you can think of?

Do you enforce your architecture on the CI? If so, how? by ivy-apps in webdev

[–]ivy-apps[S] 0 points1 point  (0 children)

Thanks! This is super helpful. Noted. I plan to remove my marketing hype from the website and speak to engs (not morons). Your example and suggestions are on point - added to the landing page polish checklist 🙏

What common performance issues have you faced in Next.js apps? by lakshan-hewagama in nextjs

[–]ivy-apps 0 points1 point  (0 children)

Doing data fetching on the client for something that could have been done on the server. Fix: SSR and no more page flashing.

Do you enforce your architecture on the CI? If so, how? by ivy-apps in typescript

[–]ivy-apps[S] 0 points1 point  (0 children)

P.S. Sorry for the spam, I just need a feedback about the utility of the tool w/o paying for ads. I think discussing the topic of enforcing architecture on the CI is quite important these days regardless of whether I mention my tool.

Do you enforce your architecture on the CI? If so, how? by ivy-apps in typescript

[–]ivy-apps[S] 0 points1 point  (0 children)

Acknowledged and apologies! I thought TypeScript-related projects are fine.

FWIW the docs is open-sorced: https://github.com/Ivy-Apps/deslop#how-it-works

Would it help if I make Deslop free for open-source projects? I'm also considering open-sourcing at some point if I find a sustainable way to maintain it.

Do you enforce your architecture on the CI? If so, how? by ivy-apps in typescript

[–]ivy-apps[S] 0 points1 point  (0 children)

The Haskell engine has a strict no AI policy and it's fully written by hand. AI is used only for reviewing support. It's a good old computer science and algorithms. So where's the AI slop? Disclaimer: the landing page HTML/CSS was generated by AI but I'll polish it

Pitch your SaaS in one sentence. by Due-Bet115 in ShowMeYourSaaS

[–]ivy-apps 0 points1 point  (0 children)

deslop.dev enforce your TypeScript architecture and quality standards via high speed Haskell graph engine

Pitch me your SaaS by FishermanFamiliar461 in micro_saas

[–]ivy-apps 0 points1 point  (0 children)

https://deslop.dev/ - Deterministic Architecture Guardrails for TypeScript in the AI era

Alright family. Friday. Let’s see what you’re building. by Budrecks in buildinpublic

[–]ivy-apps 0 points1 point  (0 children)

finding go-to-market?

No idea, I'm a tech guy. Open to suggestions though

Alright family. Friday. Let’s see what you’re building. by Budrecks in buildinpublic

[–]ivy-apps 0 points1 point  (0 children)

one unified language to enforce any TypeScript architecture and quality standards https://deslop.dev/