• Stars
    star
    210
  • Rank 187,585 (Top 4 %)
  • Language
    JavaScript
  • License
    GNU Affero Genera...
  • Created over 12 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Desant is an open source landing page system

Desant

Desant /dɛsɑːnt/ is a Polish word for military landing operations aimed at a bringing the landing force usually via landing craft to a shore or to land with the purpose of power projection ashore by forces coming usually from ships and also aircraft and able to fight.

Desant - Open source landing pages!

Desant is an open source, neat landing page application. It's simple to use, customize and extend to your needs. There's an awesome admin area too - it will give you all the information and statistics you need.

Demo

You can check online demo of the admin on here. Login as admin with password pass.

Quick start with Vagrant

There's a public Vagrant box configured to run with Desant. You can hop into the project qucikly by running:

$ gem install vagrant # if not installed yet
$ vagrant up
$ vagrant ssh
vagrant@vagrant:~$ cd desantapp

Now just go and perform installation and setup steps described below.

Installation and setup

First of all, install all the dependencies using Bundler:

$ bundle

Desant uses MySQL as backend, so you should have this database installed and running. If you have it then copy .env.sample to .env - this file contains i.a. database configuration and admin setup:

$ cp .env.sample .env

Admin area uses very simple, single user authentication. Now generate password hash for your password:

$ rake password_hash PASS=yoursecretpass
Your password hash: $2a$10$9r64bxHKi3wxFwKDbjZYWOj4M26xp0RM0maoGeRo0JPy6Cg5OrzBC

Copy generated hash and assign it to ADMIN_PASSWORD_HASH in .env file, edit database configuration and other settings.

Last thing to do is to run create databases and run migrations:

$ foreman run rake db:create
$ foreman run rake db:migrate

As you can se, we must use foreman run command from now on - it's because all the stuff which is affected by the database requires its configuration to be loaded. Foreman automatically loads configuration from the .env file.

Now you should be able to start the application, we must use Foreman here as well.

$ foreman start

If everything went fine, you should go to http://localhost:5000/ and see a demo landing page! Use http://localhost:5000/admin/ to access admin area.

To run RSpec unit tests use the following rake task:

$ foreman run rake spec

Frontend tests (JavaScript unit tests) runs with:

$ foreman run rake spec:jasmine

You can also run all the specs together:

$ foreman run rake spec:all

For development purposes you can populate dummy data using following rake task:

$ foreman run rake db:populate

Design introduction

Desant is not a Rails app, it's an experiment with full stack, single page application in Backbone.js managed by Sinatra backend. Here's the directory structure explained:

apps/                   applications (components actually).

apps/*/assets/          asset pipeline files.
apps/*/assets/static/   static files.
apps/*/assets/app/      backbone application files.
apps/*/assets/libs/     javascript libraries.
apps/*/assets/styles/   stylesheet files.

apps/*/forms/           form classes.
apps/*/helpers/         application specified helpers. 
apps/*/loggers/         custom notification subscribers.
apps/*/models/          model classes.
apps/*/presenters/      application presenters.
apps/*/services/        application service classes.
apps/*/spec/            application specified test files.  
apps/*/views/           application view files.

config/                 configuration files.
db/migrate/             database migrations.
lib/                    libraries and extensions, also app's core files.
log/                    log files.
spec/                   global test files.

Project is booted with boot.rb configuration file. All the apps (components) are routed in config.ru, with standard Rack::Router.

The main goal of the experiment was to provide system for easy and robust work on Backbone.js application and reusable backend elements. It's also aims to get rid of stupid Rails' assumptions that action = page, and models are used both in forms and presentations. In Desant, models are separated from forms and presenters. Model takes care about business logic, when forms handle input and presenters output. More sophisticated operations are handled with services. This design makes the stuff easy to test and reuse across the projects.

Coding conventions

TODO...

Screenshots

Registered users

Locations

Login page

Copyright

Copyright (C) 2012 by Chris Kowalik a.k.a nu7hatch [email protected]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

More Repositories

1

gmail

A Rubyesque interface to Gmail, with all the tools you'll need.
Ruby
664
star
2

gouuid

Go binding for libuuid
Go
417
star
3

aclatraz

Flexible access control mechanism!
Ruby
110
star
4

mustang

(proof-of-concept) Awesome V8 JavaScript engine embedded into Ruby's shiny body.
Ruby
106
star
5

rails3-ujs-example

Very simple and quick example of rails 3 app with jquery UJS
Ruby
46
star
6

konfigurator

Small and flexible configuration toolkit inspired i.a. by Sinatra settings.
Ruby
35
star
7

angular-foundation-on-yeoman

AngularJS powered by Zurb Foundation, running on Yeoman
JavaScript
31
star
8

webrocket

(under-development) Evented WebSocket server in Go
Go
31
star
9

gochanio

Go package which allows to bind channel with any IO reader or writer interface.
Go
26
star
10

golaroid

Simple assets server with ability to apply filters to the images
Go
25
star
11

egoistat

Website statistics from the most popular social networks
JavaScript
23
star
12

shaven

(proof-of-concept) Templating without mustaches!
Ruby
22
star
13

padrino-responders

This component is used to create slim controllers without unnecessery and repetitive code.
Ruby
16
star
14

gonetbench

Small TCP benchmarking tool in Go-lang
Go
15
star
15

gopqueue

Simple priority queue in Go
Go
14
star
16

redis-aid

First aid with Redis!
Ruby
13
star
17

areyoufuckingcoding.me

Ruby
10
star
18

padrino-form-errors

Form validation errors helper for Padrino
Ruby
7
star
19

persival

Programatic, persistent, pseudo key-value storage in Go
Go
7
star
20

authtools

Usefull stuff for unique tokens and secured password hashes generation.
Ruby
5
star
21

weedwarelicense.org

Weedware license website.
Ruby
5
star
22

wtf

WTF toolkit extracted from WebKit
C++
5
star
23

etoile

Etoile source code mirror. Etoile is a user environment designed from the ground up around the things people do with computers: create, collaborate, and learn.
Objective-C
5
star
24

rspec-jasmine

Jasmine runner and reporter for RSpec
JavaScript
4
star
25

objectpool

Magical thread pool implementation
Ruby
4
star
26

gotrail

Yet another super simple go logging...
Go
3
star
27

awesome_country_select

Provides a advanced helper to get an HTML select list of countries. The list of countries comes from the ISO 3166 standard. While it is a relatively neutral source of country names, it will still offend some users.
Ruby
3
star
28

gocolor

Simple colorizing at top of fmt package
Go
3
star
29

cgoecho

Example app using cgo interface to extend go with C code.
Go
3
star
30

no-logic-in-your-views-startechconf-2011

My talk on StarTechConf 2011 in Chile
Ruby
2
star
31

react

Redis based remote command executor.
Ruby
2
star
32

krug-redis-presentation

Presentation about Redis at Kraków Ruby User Group meeting
2
star
33

ryori

Projects generator and recipes compiler.
Ruby
2
star
34

exoteric

Website statistics from the most popular social networks (prototype in ruby)
Ruby
2
star
35

gostepper

Small helper for dealing with setup steps
Go
2
star
36

haml-magic-translations

Provides automaticaly translations in haml templates
Ruby
2
star
37

telegraph

Telegraph is DSL for quickly creating TCP servers in Ruby. It's running on EventMachine and is very similar to sinatra.
Ruby
2
star
38

nu7macs

Emacs configuration for nu7s!
Emacs Lisp
1
star
39

krug-padrino-presentation

Presentation about Padrino at Kraków Ruby User Group meeting
1
star
40

distributed-hell-wrocloverb-2012

JavaScript
1
star
41

mad-macs

...
Emacs Lisp
1
star
42

nu7hat.ch

nu7hatch's piece of web...
CSS
1
star
43

hop

Hop in the project!
Shell
1
star
44

cgoecho2

Modular version of the cgo echo example
1
star
45

go-web-services-london-go-meetup

Slides for my talk about web-services in Go at London Go Meetup
Ruby
1
star
46

rails-block-labels

Hack for using i18n powered block labels in rails3 app!
Ruby
1
star
47

i-hate-ruby-rubyconfuy-2011

Slides from the lightning talk at RubyConf Uruguay 2011
Ruby
1
star
48

rubykaigi2011

Presentation for RubyKaigi 2011
1
star
49

jagger

Jagger is your frontman!
Ruby
1
star
50

rage

Rage against the browsers!
JavaScript
1
star
51

agile-git-hooks

A set of git hooks improving work in agile teams.
Shell
1
star
52

trolley

High performence background jobs broker
Ruby
1
star
53

aur-packages

My packages submitted to AUR
1
star
54

selenium-webdriver

git clone of http://selenium.googlecode.com/svn/trunk/rb/
Ruby
1
star
55

leech

Simple TCP client/server framework with commands handling
Ruby
1
star
56

grapcha

Captcha reinvented!
Ruby
1
star
57

freebsd-dell-vostro

FreeBSD Dell Vostro 3300 Configuration...
Shell
1
star
58

webrocket-client-py

(under-development) WebRocket client library for Python
Python
1
star