This repository has been archived by the owner on May 29, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
517 lines (494 loc) · 24.3 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Ringo webapplication framework</title>
<!-- Bootstrap Core CSS - Uses Bootswatch Flatly Theme: http://bootswatch.com/flatly/ -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/freelancer.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="font-awesome-4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link href="http://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body id="page-top" class="index">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#page-top">Ringo</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="hidden">
<a href="#page-top"></a>
</li>
<!-- News
<li class="page-scroll">
<a href="#news">News</a>
</li>
-->
<li class="page-scroll">
<a href="#about">About</a>
</li>
<li class="page-scroll">
<a href="#portfolio">Features</a>
</li>
<li class="page-scroll">
<a href="#getstarted">Get started</a>
</li>
<!--
<li class="page-scroll">
<a href="#madewithringo">Made with Ringo</a>
</li>
-->
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
<!-- Header -->
<header>
<div class="container">
<div class="row">
<div class="col-lg-12">
<img class="img-responsive img-rounded" src="img/profile.png" alt="">
<div class="intro-text">
<span class="name">Start Ringo</span>
<hr>
<span class="skills">High level web application
framework</span>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-lg-offset-2 text-center">
<a href="https://bitbucket.org/ti/ringo" target="_blank" class="btn btn-lg btn-outline"><i class="fa fa-bitbucket"></i> Get Source from Bitbucket</a>
</div>
<div class="col-lg-4 text-center">
<a href="https://ringo.readthedocs.org" target="_blank" class="btn btn-lg btn-outline"><i class="fa fa-book"></i> Read Documentation</a>
</div>
</div>
</div>
</header>
<!-- News section
<section id="news">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h2>News</h2>
</div>
</div>
</div>
</section>
-->
<!-- About Section -->
<section class="success" id="about">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h2>About</h2>
<p>Ringo is a Python based high level web application
framework build on top of <a
href="http://www.pylonsproject.org/"
target="_blank">Pyramid</a>. The framework can be used to
build form based management or administration software.
</p>
<p>Major scope of application for Ringo are <strong>form
based</strong> and <strong>data driven</strong>
management and administration applications.</p>
<p>Ringo started in 2013 as a coding pet project of
Torsten Irländer. He looks back on almost 10 years of
python web application development. Having enough from
building web applications with similar needs like user
administration, permissions systems or nice forms with
validation from scratch every time he decided to build
Ringo as a high level web framework which provides typical
features often needed in web applications.</p>
<hr style="color:gray">
</div>
</div>
<div class="row">
<div class="col-sm-4">
<h3>Strength</h3>
<p>Ringo provides a <strong>building block
architecture and "Ready to Use"
components.</strong>. This allows fast and flexible
development.
</p>
<p>With main focus on form based application Ringo uses <a
href="https://bitbucket.org/ti/formbar"
target="_blank">formbar</a> as form library. This
opens <strong>great capabilities on form layout, validation and
workflows.</strong></p>
<p>Together this makes Ringo a great tool in a
<strong>rapid development</strong> process.</p>
</div>
<div class="col-sm-4">
<h3>Who uses Ringo</h3>
<p>
Ringo is currently used in various areas of
<strong>social casework</strong>:</p>
<ul class="list-unstyled">
<li><a href="https://bitbucket.org/ti/efa"
target="_blank">eFa</a> – Specialist application to support data acquisition and evolution within in Case Management like processes.</li>
<li>Various implementation like WASKA, PWE, SIB based on eFa.</li>
<li><a href="https://bitbucket.org/jagreg/prospi"
target="_blank">Prospi</a> – Project management and monitoring software focused on projects in social work.</li>
</ul>
<p>Further management software:</p>
<ul class="list-unstyled">
<li><a href="https://bitbucket.org/ti/plorma2"
target="_blank">Plorma</a> – Task management software with aspects to support agile software development in SCRUM like product management.</li>
</ul>
</div>
<div class="col-sm-4">
<h3>Status <img src="https://drone.io/bitbucket.org/ti/ringo/status.png"/></h3>
<p>Ringo is ready for the use in productive environment and
is continuously developed through various projects.</p>
<ul class="list-unstyled">
<li><strong>Stable Version</strong>: 1.4</li>
</ul>
<p>
The development currently happens exclusive on the head of
the source repository. There is no maintenance on older
versions yet.
</p>
</div>
</div>
</div>
</section>
<!-- Portfolio Grid Section -->
<section id="portfolio">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h2>Features</h2>
<hr>
</div>
</div>
<div class="row">
<div class="col-sm-4 portfolio-item">
<h3>Building block system</h3>
<strong>Write less code!</strong> The key idea behind Ringo
is to provide a building block system which allows you to
easily add and link <strong>Modules</strong> which will
handle <strong>data persistence</strong> and
<strong>business logic</strong>. Adding modules is very easy
and you will not even need to write a single line of code to
get started to store data in your application.
</div>
<div class="col-sm-4 portfolio-item">
<h3>Batteries included</h3>
Many of often used features in web applications like
<strong>Logging</strong>, <strong>Versioning</strong>,
<strong>Comments</strong>, <strong>File uploads</strong>,
<strong>Print templates</strong>, <strong>Tags</strong>,
<strong>Nested Elements</strong> are already included in
Ringo. They can easily be added to your modules through
mixins.
</div>
<div class="col-sm-4 portfolio-item">
<h3>User management</h3>
Manage your <strong>Users</strong> in
<strong>Usergroups</strong> and store <strong>Profiles</strong>
along with them in the web interface. Optionally provide new
user a <strong>User registration</strong> and allow users to
reset their password using a email based <strong>Password reset</strong>
function in case they forget their password.
</div>
<div class="col-sm-4 portfolio-item">
<h3>Permission system</h3>
A fine graded <strong>role based permission</strong> system allows you define
who is allowed to do what on <strong>each single item</strong> in your application.
</div>
<div class="col-sm-4 portfolio-item">
<h3>Powerful forms</h3>
In data driven application forms are one of the most
important elements in your application. Ringo uses
the <a href="https://bitbucket.org/ti/formbar"
target="_blank">Formbar</a> library, which gives to large
<strong>freedom to design and validate</strong> your forms.
</div>
<div class="col-sm-4 portfolio-item">
<h3>Workflows</h3>
A state machine in Ringo let you define the business logic
in your application. Define actions when doing transitions
between states and ensure with conditions that a certain
state can only reached if your defined preconditions are
fulfilled.
</div>
<div class="col-sm-4 portfolio-item">
<h3>Configurable</h3>
Changing the layout of the GUI? Changing the default
behaviour of a particular module action? Not problem. Ringo
provides many ways to adapt the default application to your
need. Further Ringo come with a administration UI which which
let you configure many aspects of your application.
</div>
<div class="col-sm-4 portfolio-item">
<h3>REST INTERFACE</h3>
A Ringo based application is not only traditional
web applications with an integrated GUI. Every module also
has a REST-Interface for every core method which can be used
from external clients.
</div>
<div class="col-sm-4 portfolio-item">
<h3>Extensible</h3>
Using the <strong>plugin mechanism</strong> of Ringo
developers have the option to write external extensions for
Ringo which can be plugged into your application to add some
general functionality.
</div>
<!--
<div class="col-sm-4 portfolio-item">
<h3>cmdline admin</h3>
</div>
-->
</div>
</div>
</section>
<section id="getstarted">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h2>Get started!</h2>
<hr>
<p>The following steps will show you how easy it is to create a
Ringo based application using a PostgreSQL database and start
storing your data in a new module. The new application will
be called <strong>Foo</strong></p>
<h3>0. Requirements</h3>
<p>This setup is tested on Ubuntu 12.10 but should
(hopefully) work on other distributions too.</p>
<ul>
<li>Python 2.7.8</li>
<li>A PostgreSQL or any other "real" database.<strong> With version 1.2.0 SQLite is no
longer supported!</strong>. The setup of the database
is out of scope of this short introducion. Please refer to
the documentation of your database.</br>The default
configuration expects that the user who starts the application is allowed to
connect to configured database without a password using
unix sockets. If you want a different behaviour you can change the db connection in the
development.ini file.</li>
<li><a href="http://virtualenv.readthedocs.org/en/latest/"
target="_blank">Virtualenv</a> (Tested with version 1.11.6)</li>
<li>On installation at least lxml and psycopg2 (PostgreSQL
Driver for Postgres) will be compiled so you might need
some extra libraries (dev packages) and tools... Will add more details
soon.</li>
</ul>
<h3>1. Create a home for your development</h3>
<p>First start with creating some folders where your ringo
application development can happen.</p>
<pre>
mkdir Foo
cd Foo
# Create a virtualenv for your new Foo application
virtualenv env
# Activate the virtual env and continue the next steps with
# activated virtual env.
source env/bin/activate
</pre>
<h3>2. Download and install Ringo</h3>
<p>Get the source from Bitbucket and install Ringo. </p>
<pre>
hg clone https://bitbucket.org/ti/ringo
cd ringo
python setup.py develop
# Leave the ringo directory to continue with the next step.
cd ..
</pre>
<h3>3. Create a new Ringo based application</h3>
<p>Ringo comes with an application scaffold which make it
easy to create a new Ringo based application.</p>
<pre>
pcreate -t ringo Foo
cd Foo
python setup.py develop
</pre>
<p>To be able to do the next steps you need to install your
new application too.</p>
<h3>4. Initialise the database and start the application.</h3>
<p>Initialise the database by invoking one of the nice
administration commands. After that we can start our fresh
created application for the first time.</p>
<pre>
createdb foo
foo-admin db init
pserve development.ini
</pre>
<p>Stop the server by pressing CTRL-C</p>
<h3>5. Create a new module for your application</h3>
<p>Wow that was easy! But wait. We want to create a new
module to store some custom items in our application. Let's
say we want to store <i>bar</i> items. Creating a new module
is easy. Thanks to the administration command its simply a
question of doing the following.</p>
<p></p>
<pre>
# First we will backup the database.
pg_admin foo > foo.sql
# Then invoke the command to add a new modul to your
# application
foo-admin modul add bar
# Please follow the instructions printed on the console
# after invoking the command.
# Touch and apply the generated alembic migration script to
# update your database. Touching is currently crucial for a
# working migration!
touch /path/to/the/generated/migrationscript.py
foo-admin db upgrade
</pre>
<p>This command will create a new module called "bar" and also
creates default LCRUDIE (List, Create, Read, Delete, Import
and Export) views!
</p>
<h3>6. Customize the new module.</h3>
<p>This step is optional. If just want to
get a fast impression of a Ringo based application skip over
to step 7.</p>
<p>Otherwise this step is a good starting point if you
want to actually safe something useful in your new module.
The created module is still empty. It just has the basic
attribute like an internal ID. It is waiting to be filled
with life ;)<br>
The next steps are
<ol>
<li>Extending the model of the module by adding new fields.</li>
<li>Designing nice forms.</li>
<li>Configuring the overview page.</li>
</ol>
Step 1 and 2 can be seen as one step which is described in
the Ringo documentation. See <a
href="http://ringo.readthedocs.org/en/latest/development.html#adding-new-fields-to-the-model"
target="_blank">Adding new fields to the model</a> section.<br>
</p>
<h3>7. Start your new application</h3>
<p>Here we are! Its time to launch the application.</p>
<pre>
pserve --reload development.ini
</pre>
</div>
</div>
</div>
</section>
<!--
<section id="madewithringo">
<div class="container">
<div class="row">
<div class="col-lg-12">
<h2>Made with Ringo</h2>
<hr>
<p>The following project has been made with Ringo</p>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>Plorma</h2>
<p>Write me.</p>
</div>
<div class="col-md-6">
<h3>Prospi</h2>
<p>Write me.</p>
</div>
</div>
</div>
</section>
-->
<!-- Footer -->
<footer class="">
<div class="footer-above">
<div class="container">
<div class="row">
<div class="footer-col col-md-4">
<h4>License</h4>
<p class="small">Ringo is Free Software. It is licensed under the GPL license in version 2 or
later. See <a href="http://www.gnu.org/licenses/gpl-2.0">GPL License v2</a> for more details on the license.</p>
</div>
<div class="footer-col col-md-4">
<h4>Contact <i class="fa fa-fw fa-twitter"></i>
<i class="fa fa-fw fa-envelope"></i><!--<i class="fa
fa-fw fa-wechat"></i>--></h4>
<p class="small">If you've got questions that aren't
answered in the ringo documentation, contact the <a
href="https://groups.google.com/d/forum/ringo-framework"
target="_blank">ringo
mailing list</a>.
To stay in informed on the development you can
<a href="https://twitter.com/RingoFramework">follow
Ringo on twitter</a>.
<!--or join the <a
href="irc://irc.freenode.net/#ringo-framework"
target="_blank">#ringo-framework IRC channel</a>.--></p>
</div>
<div class="footer-col col-md-4">
<h4>Professional Support <i class="fa fa-fw fa-support"></i></h4>
<p class="small">Professional application development
and support will be available from the <a href="http://www.intevation.org"
target="_blank">Intevation GmbH</a>. Please write an email to <a
href="mailto:[email protected]">[email protected]</a>
and ask for conditions on support.
</div>
</div>
</div>
</div>
<div class="footer-below text-center">
<div class="container">
<div class="row">
<div class="col-lg-12">Copyright © Torsten Irländer 2014</div>
</div>
</div>
</div>
</footer>
<!-- Scroll to Top Button (Only visible on small and extra-small screen sizes) -->
<div class="scroll-top page-scroll visible-xs visble-sm">
<a class="btn btn-primary" href="#page-top">
<i class="fa fa-chevron-up"></i>
</a>
</div>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
<!-- Plugin JavaScript -->
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<script src="js/classie.js"></script>
<script src="js/cbpAnimatedHeader.js"></script>
<!-- Contact Form JavaScript -->
<script src="js/jqBootstrapValidation.js"></script>
<script src="js/contact_me.js"></script>
<!-- Custom Theme JavaScript -->
<script src="js/freelancer.js"></script>
<script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-57644820-2', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>