blob: 9b03666aeb0185dd491b5592f02b6678085263b1 [file] [log] [blame]
{% extends "isis-template.html" %}
{% block content %}
<div class="homepage">
<div class="jumbotron">
<div class="row">
<div class="col-sm-6">
<img class="logo" src="./images/isis-logo-568x286.png" alt="Apache Isis"/>
<h3 class="legend">Domain Driven Applications, Quickly</h3>
</div>
<div class="col-sm-6">
<div class="carousel slide" data-ride="carousel" id="quote-carousel">
<ol class="carousel-indicators">
<li data-target="#quote-carousel" data-slide-to="0" class="active"></li>
<li data-target="#quote-carousel" data-slide-to="1"></li>
<li data-target="#quote-carousel" data-slide-to="2"></li>
<li data-target="#quote-carousel" data-slide-to="3"></li>
<li data-target="#quote-carousel" data-slide-to="4"></li>
<li data-target="#quote-carousel" data-slide-to="5"></li>
<li data-target="#quote-carousel" data-slide-to="6"></li>
<li data-target="#quote-carousel" data-slide-to="7"></li>
<li data-target="#quote-carousel" data-slide-to="8"></li>
<li data-target="#quote-carousel" data-slide-to="9"></li>
</ol>
<div class="carousel-inner">
<div class="item active">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>I like the guidance Apache Isis gives me for structuring code along the lines of Domain Driven Design. My first web application in plain Java without writing a single line of DDL or HTML/*Script.</p>
<small>Joerg Rade</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>A fantastic framework! With Apache Isis we can prototype a deployable application in minutes rather than days.</p>
<small>Jeremy Branham</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>From a Sprint retrospective:</p>
<p>&quot;We normally don't see anything at all for the first three months, and now you're showing me working screens after two weeks&quot;</p>
<small>Project programme manager</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>Apache Isis enabled us to focus on the problem domain and data quality and - because the UI was generated for us by the framework - not get distracted by UI concerns. Identified security issues were quickly addressed by the Apache Isis committers.</p>
<small>Architect</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>Support from the Apache Isis community is excellent. I sense a love and dedication that is inspiring.</p>
<small>Johan Doornenbal</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>Isis provided us with a great starting point for our app; we simply took the todoapp archetype and used it as a template to help set up our integration tests and BDD specs. We were productive almost immediately</p>
<small>Vladimir Nisevic, A1 Telekom Austria</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>From a Sprint retrospective, having switched to using Isis:</p>
<p>&quot;This is already looking better than anything we saw after six months of work in the first phase&quot;</p>
<small>Project test manager</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>We use Isis because of its simple and fast user interface generation.</p>
<small>Andreas Lechner</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>Apache Isis is one of the best tools for hackathons. Given a 2 day hackathon challenge I have the perfect framework to create my prototype helping me to focus on business logic.</p>
<small>Sunand Padmanabhan</small>
</div>
</div>
</blockquote>
</div>
<div class="item">
<blockquote>
<div class="row">
<div class="col-sm-12">
<p>From a Sprint retrospective, the criticism of one lead developer sounded more like praise:</p>
<p>&quot;The problem is that if we show this to the customer they will think that all the work is done.&quot;</p>
<small>provided by Ged Byrne</small>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 description">
<p>Apache Isis&trade; is a framework for rapidly developing domain-driven apps in Java. Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a RESTful API.</p>
<p><a class="btn btn-primary btn-lg learn-more" href="./documentation.html" role="button">Learn more »</a></p>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
<h2>UI "for free"</h2>
<p>Isis dynamically builds a generic UI directly from the underlying domain objects.
This makes for extremely rapid prototyping and a short feedback cycle, perfect for agile development.
The UI can also be extended for specific use cases, and can be themed using <a href="http://getbootstrap.com">Bootstrap</a>.</p>
<p><a class="btn btn-default" href="./intro/elevator-pitch/isis-in-pictures.html" role="button">View details »</a></p>
</div>
<div class="col-md-4">
<h2>Domain-Driven</h2>
<p>The core of an Isis application are the domain objects, either persisted entities or view models.
Business rules can be associated directly with domain objects, or can be factored out into separate
services. Isis performs dependency injection everywhere to ensure that the application remains decoupled.</p>
<p><a class="btn btn-default" href="./documentation.html" role="button">View details »</a></p>
</div>
<div class="col-md-4">
<h2>Add-ons <small>(non ASF)</small></h2>
<p>Isis has a large number of github-hosted add-on modules for security, auditing, command profiling, mail merge and other cross-cutting concerns. It also has a number of UI extensions
for maps, calendars and so on. All are open source and designed for out-of-the-box use or to fork as you require.</p>
<p><a class="btn btn-default" href="http://www.isisaddons.org" role="button">View details »</a></p>
</div>
</div>
<br/>
<div class="row">
<div class="col-md-12">
<h4>A typical application built with Apache Isis. Like all Isis apps, the UI is dynamically built from the domain model.</h4>
<img class="estatio" src="./intro/powered-by/images/estatio-1.png" style="width: 98%"/>
<div class="center">
<p>You can learn more about this particular application <a href="./intro/powered-by/powered-by.html">here</a>.
The app is also open source, so you can check out its source code on <a href="http://github.com/estatio/estatio">github</a>.</p>
</div>
</div>
</div>
<br/>
<div class="row">
<div class="col-md-12">
<h4>Start developing your own Isis application using our <a href="intro/getting-started/simpleapp-archetype.html">simpleapp archetype</a>:</h4>
</div>
</div>
<div class="row">
<div class="col-md-8">
<pre>
mvn archetype:generate \
-D archetypeGroupId=org.apache.isis.archetype \
-D archetypeArtifactId=simpleapp-archetype \
-D archetypeVersion=1.8.0 \
-D groupId=com.mycompany \
-D artifactId=myapp \
-D version=1.0-SNAPSHOT \
-B</pre>
</div>
</div>
<br/>
<div class="row">
<div class="col-md-12">
<h4>... and this short tutorial should give you an idea as to how Apache Isis dynamically builds the UI:</h4>
</div>
<div class="col-md-12">
<div id="this-carousel-id" class="carousel slide">
<ol class="carousel-indicators">
<li data-target="#this-carousel-id" data-slide-to="0" class="active"></li>
<li data-target="#this-carousel-id" data-slide-to="1"></li>
<li data-target="#this-carousel-id" data-slide-to="2"></li>
<li data-target="#this-carousel-id" data-slide-to="3"></li>
<li data-target="#this-carousel-id" data-slide-to="4"></li>
<li data-target="#this-carousel-id" data-slide-to="5"></li>
<li data-target="#this-carousel-id" data-slide-to="6"></li>
<li data-target="#this-carousel-id" data-slide-to="7"></li>
<li data-target="#this-carousel-id" data-slide-to="8"></li>
</ol>
<div class="carousel-inner">
<div class="item active">
<a href="#">
<img src="images/index-screenshots/010-sign-in.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/020-object-layout.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/030-declarative-business-rules.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/040-imperative-business-rules.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/050-action-with-args.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/060-action-with-args-autocomplete.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/070-jdo.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/080-rest-api.png"></img>
</a>
</div>
<div class="item">
<a href="#">
<img src="images/index-screenshots/090-integtesting.png"></img>
</a>
</div>
</div>
<a class="carousel-control left" href="#this-carousel-id" data-slide="prev"><span class="icon-prev"></span></a>
<a class="carousel-control right" href="#this-carousel-id" data-slide="next"><span class="icon-next"></span></a>
</div><
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('.carousel').carousel({
pauseOnHover: true,
interval: 6000
});
$('#quote-carousel').carousel({
pauseOnHover: true,
interval: 6000
});
});
</script>
{% endblock %}