Ferreteria: Difference between revisions

From Woozle Writes Code
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
{{sidebar/htyp/doc}}
<hide>
[[Ferreteria]] is a web application framework I'm writing in PHP. It originally emerged from writing [[VbzCart]], when I realized a lot of the classes and techniques I'd created (starting with the database classes) could be used for other applications as well.
[[page type::article]]
[[thing type::software]]
[[thing type::project]]
[[software type::library]]
[[language::PHP]]
[[category:software]]
</hide>
==About==
'''Ferreteria''' is a code library that provides a basic [[application framework]] along with some utility functions that can be used separately. It was originally written for [[VbzCart]], but became useful in its own  right as it developed. The name literally means "hardware" in Spanish; I used it because I came across the word in a hardware store full of useful tools, which made it seem somehow appropriate as a name for a software toolkit, and also because I seem to be using the affix "ferret" in a lot of my software projects.


Because it does not use JavaScript (JS), it is very fast; response-times tend to be comparable to a "single-page app" framework written in JS, except that the initial load is as quick as subsequent reloads and all of the navigation links are bookmarkable.
It is written in [[PHP]], but should be portable to other languages without too much difficulty.
==Features==
{|
* '''User management'''
|-
** log-in control: email-based account creation, password reset
|
** user-group assignment, group-permissions assignment
==Pages==
* '''State persistence via URL'''
* [[/install]]
** The only cookie stored is a single "session" cookie, which usually just stores the minimum needed for session security.
* [[/errors]]: elaboration on various error messages
*** Most app-state data is stored in the URL path, without even using the <code>?query</code> part of the URL, for practical and aesthetic reasons.
* [[/coding]]: conventions
* '''Database wrappers'''
* [[/modules]]: available drop-in modules (includes table design pages)
** classes for different types of tables, records
* [[/archive]]: obsolete pages
** classes for handling forms, controls, data fields
===versions===
** functions for specific tables can be built by descending from more general classes
versions 1-3 need to be renamed to 0.1-0.3 because they're all pre-release
** URL-linkable tables, records
* '''[[/v0.4|version 0.4]]''': recordsets split into single-row records and multiple-row recordsets; using status objects more
==Applications==
* '''[[/v0.3|version 0.3]]''': had to temporarily abandon several weeks of work on this in January 2019
Ferreteria applications I've written or am working on:
** [[/v0.3/class]]es
* [[Greenmine]]
** [[/v0.3/fx]] (functions)
** [[FinanceFerret]]
** [[/v0.3/usage/forms]]: early v3 usage documentation, probably needs update
* '''[[/v2|version 2]]''', 2017-2019: basically Ferreteria 1 with db.v2
** [[/v2/class]]: class structure
** [[/v2/usage]]: how to do things in Ferreteria, how the pieces work
* '''[[/v1|version 1]]''' never really had much documentation
** [[/v1/usage/forms]]
| valign=top |
 
==Apps/Applets==
* Greenmine:
** [[WorkFerret]]
** [[WorkFerret]]
* [[VbzCart]]
** [[FinanceFerret]]: in redevelopment
* [[Wikcess]]
* [[VbzCart]]: online retail
==Reference==
|}
* {{htyp}}: official documentation
==Links==
* {{l/htw|HyperAdmin}}: an early (2005) description of what eventually became Ferreteria's login system
===Official===
==Notes==
* [https://gitlab.com/woozalia/ferreteria GitLab]: official code repository
* {{l/sub|2020/06/12}} node system conceptual design
* [http://rm.vbz.net/projects/ferreteria Redmine @ vbz]: official project tracker
* {{l/sub|2020/04/23}} one issue around generalizing I/O format translation
* {{l/sub|2020/04/22}} with regard to the idea that [https://geometrian.com/programming/tutorials/write-games-not-engines/ it's better to set out to write an app than to write a framework] and how this calls into question the idea of writing Ferreteria...

Revision as of 15:19, 7 October 2021

<hide> page type::article thing type::software thing type::project software type::library language::PHP </hide>

About

Ferreteria is a code library that provides a basic application framework along with some utility functions that can be used separately. It was originally written for VbzCart, but became useful in its own right as it developed. The name literally means "hardware" in Spanish; I used it because I came across the word in a hardware store full of useful tools, which made it seem somehow appropriate as a name for a software toolkit, and also because I seem to be using the affix "ferret" in a lot of my software projects.

It is written in PHP, but should be portable to other languages without too much difficulty.

Pages

versions

versions 1-3 need to be renamed to 0.1-0.3 because they're all pre-release

Apps/Applets

Links

Official