-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
57 lines (56 loc) · 9.17 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Almin · Flux/CQRS patterns for JavaScript application.</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Flux/CQRS patterns for JavaScript application."/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Almin · Flux/CQRS patterns for JavaScript application."/><meta property="og:type" content="website"/><meta property="og:url" content="https://almin.github.io/index.html"/><meta property="og:description" content="Flux/CQRS patterns for JavaScript application."/><meta name="twitter:card" content="summary"/><link rel="shortcut icon" href="/img/favicon.png"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><link rel="alternate" type="application/atom+xml" href="https://almin.github.io/blog/atom.xml" title="Almin Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://almin.github.io/blog/feed.xml" title="Almin Blog RSS Feed"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en"><img class="logo" src="/img/icon-highlight.png" alt="Almin"/><h2 class="headerTitleWithLogo">Almin</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li><li class=""><a href="/docs/en/getting-started.html" target="_self">Docs</a></li><li class=""><a href="/docs/en/api.html" target="_self">API</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="/en/help.html" target="_self">Help</a></li><li class=""><a href="https://github.com/almin/almin" target="_self">GitHub</a></li></ul></nav></div></header></div></div><div class="navPusher"><div><div class="homeContainer"><div class="homeSplashFade"><div class="wrapper homeWrapper"><div class="projectLogo"><img src="/img/almin.svg"/></div><div class="inner"><h2 class="projectTitle">Almin<small>Flux/CQRS patterns for JavaScript application.</small></h2><div class="section promoSection"><div class="promoRow"><div class="pluginRowBlock"><div class="pluginWrapper buttonWrapper"><a class="button" href="/docs/en/getting-started.html" target="_self">Getting Started</a></div><div class="pluginWrapper buttonWrapper"><a class="button" href="/docs/en/example-projects.html" target="_self">Take a tutorial</a></div></div></div></div></div></div></div></div><div class="mainContainer"><div class="container paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement alignCenter imageAlignTop twoByGridBlock"><div class="blockImage"><img src="/img/icon/mbri-globe.svg"/></div><div class="blockContent"><h2><div><span><p>Scalable</p>
</span></div></h2><div><span><p>Work with Medium-small(1,000LOC) – Large(100,000LOC) size project</p>
</span></div></div></div><div class="blockElement alignCenter imageAlignTop twoByGridBlock"><div class="blockImage"><img src="/img/icon/mbri-refresh.svg"/></div><div class="blockContent"><h2><div><span><p>Testable</p>
</span></div></h2><div><span><p>Can Implement UseCase/Store/Domain as separated components</p>
</span></div></div></div><div class="blockElement alignCenter imageAlignTop twoByGridBlock"><div class="blockImage"><img src="/img/icon/mbri-search.svg"/></div><div class="blockContent"><h2><div><span><p>Debuggable</p>
</span></div></h2><div><span><p><a href="/docs/en/logging.html">Logger</a>, <a href="https://github.com/almin/almin-devtools">DevTools</a>, <a href="/docs/en/logging.html">Performance monitoring</a></p>
</span></div></div></div><div class="blockElement alignCenter imageAlignTop twoByGridBlock"><div class="blockImage"><img src="/img/icon/mbri-layers.svg"/></div><div class="blockContent"><h2><div><span><p>Layered Architecture</p>
</span></div></h2><div><span><p>Work with DDD/CQRS architecture</p>
</span></div></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2>State management library for JavaScript application</h2><div><span><p>Now, We can implement web apps with <a href="https://github.com/facebook/flux">Flux</a>,
<a href="https://github.com/reactjs/redux">Redux</a>, <a href="https://github.com/mobxjs/mobx">MobX</a> etc.
But, We often hear a story like following:</p>
<blockquote>
<p>The control flow of <em>[[LIBRARY]]</em> is cool!<br>
But how to implement domain logic?</p>
</blockquote>
<p>Almin aims to help you focus domain logic on your application.</p>
</span></div></div><div class="container darkBackground paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignRight twoByGridBlock"><div class="blockContent"><h2><div><span><p>The Concept of Almin</p>
</span></div></h2><div><span><p>The concept is described in <a href="http://azu.github.io/slide/2017/almin/concept-of-almin.html">The Concept of Almin</a> slide.</p>
<ul>
<li>Write <strong>Your domain</strong> in <strong>Your code</strong></li>
<li>Split up <strong>Read stack</strong> and <strong>Write stack</strong></li>
<li><strong>Unidirectional</strong> data flow</li>
<li>Prefer <strong>Readable code</strong> to <strong>Writable code</strong></li>
<li><strong>Monitor everything</strong></li>
</ul>
<p>For more details, see <a href="http://azu.github.io/slide/2017/almin/concept-of-almin.html">The Concept of Almin</a>.</p>
</span></div></div><div class="blockImage"><a href="http://azu.github.io/slide/2017/almin/concept-of-almin.html"><img src="/img/the-concept-of-almin.png"/></a></div></div></div></div></div><div class="container highlightBackground paddingBottom paddingTop"><div class="wrapper"><div class="gridBlock"><div class="blockElement imageAlignSide imageAlignLeft twoByGridBlock"><div class="blockImage"><img src="/docs/assets/almin-architecture.png"/></div><div class="blockContent"><h2><div><span><p>Focus your domain</p>
</span></div></h2><div><span><p>You can write <strong>Your domain</strong> in <strong>Your code</strong>.
It means that you can control domain layer.</p>
<ul>
<li>You can write <strong>your domain</strong> with <strong>Pure JavaScript</strong></li>
<li>Your domain <strong>doesn't need</strong> to be a subclass of Almin things</li>
</ul>
<p>Almin supports only application layer.</p>
<ul>
<li>Application layer uses your domain model</li>
</ul>
<p>If you stop to use Almin, you <strong>don't need to rewrite</strong> your domain.</p>
</span></div></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2>Who's Using This?</h2><p>This project is used by all these people</p><div class="logos"><a href="https://almin.js.org/"><img src="img/user/almin.svg" title="Almin"/></a><a href="https://github.com/azu/faao"><img src="img/user/faao.png" title="Faao"/></a></div><div class="more-users"><a class="button" href="/en/users.html">More Almin Users</a></div></div></div></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/almin.svg" alt="Almin" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/en/getting-started.html">Getting Started</a><a href="/docs/en/example-projects.html">Tutorial</a><a href="/docs/en/api.html">API Reference</a></div><div><h5>Community</h5><a href="/en/users.html">User Showcase</a><a href="https://stackoverflow.com/questions/tagged/almin" target="_blank">Stack Overflow</a><a href="https://twitter.com/alminjs" target="_blank">Twitter</a></div><div><h5>GitHub</h5><a href="https://github.com/almin/almin">GitHub</a><a href="https://github.com/almin/almin/releases">Releases</a><a href="https://github.com/almin/almin/issues">Issues</a><a class="github-button" href="https://github.com/almin/almin" data-icon="octicon-star" data-count-href="/almin/almin/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Star</a></div></section><section class="copyright">Copyright © 2021 azu</section></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
}
// keyCode for '/' (slash)
if (e.keyCode === 191) {
const search = document.getElementById('search_input_react');
search && search.focus();
}
});
</script><script>
var search = docsearch({
apiKey: '78de78c8711e82c99d77045672c84dcb',
indexName: 'almin_js',
inputSelector: '#search_input_react'
});
</script></body></html>