Hello,
Call me brain dead, but I'm having a very difficult time understanding the Zotonic development process. Docs on the Zotonic site are ok so far as they go, but they're terse, offer little to no contextual background, and very few examples. No blame -- I know the Zotonic developers are very busy with their own projects.
If the Zotonic group approves, I'd like to start an on-going discussion on how to build a very simple Zotonic application. I'd like to start with a high-level overview of how Zotonic is structured and the procedural steps involved in building a Zotonic site.
Once we have consensus on overview and process, I'd like to be able to ask focused Micky-the-Dunce questions (and invite others to do so as well) on routine issues like:
- how to build a basic page
- how to link pages through content embedded links and secondary menus
- how to set up access controls and user groups
- how to build a form (contact form how-to in docs is a good start, but a few field types left out)
- how submit, retrieve, and display form data
- how to exploit categories, collections, edges, predicates, etc.
- how to deploy a secure production site (plain vanilla)
To maintain focus, my suggestion is that we work toward a tutorial on how to build a simple contact management system that extends the existing newsletter functionality. (Other ideas welcomed.)
To kick off the process I've drafted an overview description of Zotonic below. I know it's wrong in detail, so invite corrections and improvements. The goal of this description is help a Zotonic newbie develop a mental model of Zotonic to guide development.
My hope is that, over time, we can develop rich how-tos and tutorials to flesh out Zotonic user docs. My contention is that if we have one ground up, detailed tutorial on how to build and deploy a simple Zotonic site, we'll significantly benefit the Zotonic community.
If you approve of my idea, please say yes and critique my overview.
If you don't approve, let me know and I'll shut up.
Many thanks.
LRP
Zotonic -- An Overview
Zotonic is a full-featured Content Management System (CMS) that a flexible and powerful framework developing feature-rich interactive web applications.
-- Content: words, images, video, numbers
-- Management System: Organize, enter, update, compute, display content
-- Link to Cookbook Item: How to Install Zotonic
Pages
All content in Zotonic is displayed through "pages."
-- Do not confuse Zotonic pages with HTML pages.
-- Think of Zotonic pages as "chunks" of content. It's possible for more than one Zotonic page to be displayed in a single HTML page.
Zotonic pages can be displayed on public or access-controlled web pages. Content can be entered and updated through access-controlled page administration forms.
-- Link to cookbook item: Introduction to Zotonic Administration
Default page administration forms have three fields:
-- Title -- Summary -- Body text
Additional data fields can be added as needed.
-- Link to cookbook item: How to Create a Zotonic page
Page content can be organized and presented through "templates," essentially snippets of HTML tags. These tags, in turn, can be styled through CSS files.
-- Link to cookbook item: How To Structure Page Content Through a Template
Page access
Pages can be accessed through:
-- links on other pages -- menus -- Uniform Resource Locators (URL)s -- Database queries
Page Organization
Pages can be organized in a variety of ways:
-- As a hierarchy to support drill-downs from general to specific -- As a directed-graph to support relational information -- As collections to support topical relationships -- Under categories to provide topical names
Content Persistence
Persistent content is stored in Postgresql, a relational database. Content data elements can be structured through "model" definitions; inserted and updated in the database through queries.
Query Language
Zotonic provides an Erlang-flavored query language to interface with PostgreSQL
- Link to query examples
Modules
Web applications are implemented through "modules---" a directory subtree of application-specific files. Among these files is an application controller written in the Erlang programming language.
- Link to modules