sean- / flask-skeleton Goto Github PK
View Code? Open in Web Editor NEWA skeleton for Flask applications
A skeleton for Flask applications
This is a "LAMP" stack done right... but using *NIX (FreeBSD/Mac), nginx, memcache, python and postgresql. :~] There are several goals with this Skeleton: 1) To demonstrate Flask in action in a complete context, as opposed to the fragmented set of tools that comprise Flask. Flask as a collection of modules is great, btw!, but it means you have to bootstrap constantly. Skeleton is out to combat that. 2) To demonstrate various best practices and combat the effects of the MySQL stupid juice. Use of MySQL has led to some incredibly bad examples for how to do things that end up being adopted by organizations and developers as "the way" for open source products, but in professional development land, there are diverging strategies. Document and exhibit an increasing number of them here. Over time, I'd like to incorporate improved practices as they become known. 3) Maintain Skeleton once the items in the TODO list are complete and shift it in to maintenance mode. Specifically, I don't want to see it advance beyond being a good starting point for developers (myself included). So what started this? Recently several people asked me for framework recommendations (it feels like I've tried them all and have developed a few opinions along the way). As of May 2011 it's Flask, but explaining the bootstrapping process required to get a decent app up and running is high enough that you can't easily expect a new programmer to figure it out before their attention span begins to drift. At the same time I was giving out recommendations and fielding questions regarding Flask, I also had a flurry of applications that I needed to write. Ugh. Bootstrapping any framework is typically a tremendous pain in the ass (and it shouldn't have to be, but still is). So instead of constantly wasting various evenings or afternoons looking up the required implementation details to stitch components that every application needs (e.g. a database, static files, caching), I started Flask-Skeleton. I'd been hanging on to a "skeleton" app in my ~/src/template_app directory for long enough and that I finally decided to kick something out that was usable and documented. See the TODO for details on what has been completed, but it was initially released to support structured development with a common set of design patterns already implemented (i.e. it shouldn't take hours of research to figure out how to do a mechanical task or get some piece of infrastructure integrated). All of the provided "scaffolding" resides somewhere under 'skeleton/' so that your friendly `egrep -r` command can find the desired string and cement your understanding of the layout (i.e. don't do the django thing and attempt to be clever by stashing application logic in random libraries). With Flask being the awesomest awesomesauce around (at least as of May 2011), hopefully this contribution from your neighborhood ghost in the machine will make Flask development a bit easier to get started with and will have a positive impact on your future application development. If you find new tricks that are sensible, straightforward and will help other developers setup their apps in a non-fail way, let me know[1] and I'll incorporate your changes (including improved documentation, unit tests and comments). Cheers and good luck. To begin making use of this skeleton, step through the instructions in INSTALL. [1] https://github.com/sean-/flask-skeleton
Hi Sean
Please contact me regarding the adoption of flask-skeleton into a much larger app based on blueprints. I'm looking to pay for "framework services"
Thanks
Bruce
Just a quick thought.
In terms of the aaa.user_info table, would it be better to create a view called aaa.user_info, which refers to the shadow.user table?
Not sure if that is what you are after, but it would stop a double up on queries, plus orphaned records and such.
If there is something I have missed, please let me know :)
Cheers,
Rhys
I love the idea of this but I balked as soon as I saw the giant list of third party services and dependencies that it needed to be set up for a so called "minimal skeleton".
In my mind if the goal is a small, minimal skeleton there should only have to be a web-server,. a database server,, and your done. Please read the rest before you get angry.
I get the value that caching in memcache provides, and I think caching in a lot of cases makes a lot of sense, but since such a cache is not always part of your app (IT can also be part of infrastructure or replaced with other services) , it really it shouldn't be a requirement to use memcache as other technologies exist and not all projects/deployments/clouds are compatible with it, and so that violates the fundamental ideal that this is a minimal skeleton if memcache is a hard dependency.
Thus in my mind for something like this, the need to depend on memcache should be more of an add/on/option and not a hard dependency.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.