app
Version, currently master branch1 version
- master branchlatestFeb 23, 2021
github.com/imdrasil/spider-gazelle_and_jennifer_sample_app
No description declared in shard.yml.
Installation
# Add this to your shard.yml
dependencies:
app:
github: imdrasil/spider-gazelle_and_jennifer_sample_app
branch: mastermaster is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
- no constraint declared
- Target
appfrom src/app.cr
Dependencies
Runtime Dependencies
- pg*github: will/crystal-pg
- sam*github: imdrasil/sam.cr
- pager*github: imdrasil/pager
- slang*github: jeromegn/slang
- carbon*github: luckyframework/carbon
- jennifer*github: imdrasil/jennifer.cr, branch: release/0.7.0
- view_model*github: imdrasil/view_model.cr, branch: feature/enhance_view_model_object
- form_object*github: imdrasil/form_object, branch: add_form_nesting
- flash_container*github: imdrasil/flash_container.cr
- action-controller~> 1.1github: spider-gazelle/action-controller
- http_method_emulator*github: imdrasil/http_method_emulator
Development Dependencies
- ameba*github: veelenga/amebadev
- email_opener*github: imdrasil/email_openerdev
README
Jennifer + Spider-Gazelle sample application
This is a project presenting efficient integration of Jennifer ORM and Spider-Gazelle web framework.
This project is inspired by Ruby on Rails Tutorial sample application.
Getting Started
To get started with the app, clone the repo and then install the needed dependencies:
$ cd /path/to/repos
$ git clone git@github.com:imdrasil/spider-gazelle_jennifer_sample_app.git
$ cd spider-gazelle_jennifer_sample_app
$ shards
$ make setup
The last command copies ./config/database.yml.example to ./config/database.yml. All database parameters are located in ./config/database.yml - complete them with your own values.
Next do the database setup.
$ make sam db:setup
This will automatically create development database, run all migrations and populate seeds.
To start a dev server run in a separate console tabs next commands:
$ make server
$ make webpack
NOTES
Spider-Gazelle has own url builder (e.g. ClientsController.show(@client.id)) but controllers and views have cross dependencies. To keep everything simple, all routes are hardcoded in RouterHelper module.
Dependencies
This is the lists of top-level application dependencies.
- action-controller - ActionController library which is a core component of Spider-Gazelle web framework used to build this application;
- jennifer - ORM with DB migrating tool;
- sam - task/script manager (is used only for some commands - Amber provides own CLI);
- pg - PostgreSQL driver;
- carbon - email library;
- form_object - library provides Form Object pattern - allows to move all parameter parsing and data validating logic outside of models and controllers;
- pager - simple pagination library;
- view_model - View-Model layer - allows to encapsulate all view-related logic in a separate classes and brings HTML helper methods.
- slang - template language;
- http_method_emulator - library to emulate all HTTP methods by sending method name in
_methodquery parameter inPOSTrequest; - flash_container - simple flash messages container.
Development dependencies
- email_opener - opens all sent emails in a browser tab.
Tests
TBA
TODO
- [ ] implement "Remember me* using cookies
- [ ] cover functionality with tests
- [ ] 404 and 500 pages; "rescue from" functionality
Contributing
- Fork it ( https://github.com/imdrasil/test/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- imdrasil Roman Kalnytskyi - creator, maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
master- Seen
- Feb 23, 2021
- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/imdrasil/spider-gazelle_and_jennifer_sample_app
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 15, 2026
- Synced
- Aug 15, 2026
- Versions
- 1