Unified sample web app. The easy way to learn web frameworks.

Overview

Notejam

The easy way to learn web frameworks

Do you know framework X and want to try framework Y? The easy way to start with a new framework is to compare it with frameworks you already know. The goal of the project is to help developers easily learn new frameworks by examples.

Notejam is a unified sample web application (more than just "Hello World") implemented using different server-side frameworks. Currently python, php, ruby and javascript frameworks are supported.

Supported frameworks

Python

PHP

Ruby

Java

Javascript (node.js)

In progress

Scala

  • Play

Clojure

  • Compojure

... and more frameworks are coming soon.

Application overview

Notejam is a web application which offers user to sign up/in/out and create/view/edit/delete notes. Notes are grouped in pads.

Screenshots

Sign in All notes New note

See more screenshots for look and feel.

See detailed overview.

Typical application covers following topics:

  • Request/Response handling
  • Routing
  • Templates
  • Configuration
  • Authentication
  • Forms
  • Error handling
  • Database/ORM
  • Mailing
  • Functional/unit testing

How to launch

All implementations are SQLite based and quickly launchable by built-in web servers. Each implementation has instruction describing easy steps to install environment, launch and run tests.

Contribution

Contribution is more than welcome! Contribute improvements to existing applications to help them follow best practices or provide new implementation for unsupported framework.

Do you want to improve one of the existing implementations?

Each implementation has its own README with contribution details.

Do you want to add new framework?

Read contribution guide for details.

Contacts

License

MIT © Serhii Komar.

See license.

Comments
  • Nette Framework

    Nette Framework

    Hello, Nette Framework https://nette.org/ is quite popular in Czech Republic, that's also why it got third in the PHP Frameworks 2015 survey on Sitepoint.

    The framework includes an optional Database component. Since It's optional and only a DBAL, not an ORM, I choose to use Doctrine like Symfony has in it's example. It's pretty common to use Doctrine with Nette.

    Remaining work

    • [x] fix coding style
      • I've copied code from Symfony example, and from Nette sandbox, but both have different coding style
      • should I use PSR-1 & PSR-2, or the standard that Nette uses?
    • [x] clean up dependencies
      • remove the repositories section from composer.json, after the required package is fixed
    • [x] add tests
    opened by fprochazka 30
  • Add CakePHP (in progress)

    Add CakePHP (in progress)

    Any plans on adding CakePHP? Either 2.x or the new 3.x version maybe?

    I think as one of the oldest (first ever, 10+ years) and most major frameworks out there it should most definitely be in that list.

    cakephp 
    opened by dereuromark 25
  • Interested in CodeIgniter version?

    Interested in CodeIgniter version?

    This repository is really useful. Thanks for your work!

    I was thinking to propose a CodeIgniter version, however I don't know if it would be useful as the framework usage is slowly decreasing. Do you think it would be interesting?

    codeigniter 
    opened by tgalopin 23
  • Improve laravel code quality

    Improve laravel code quality

    I'm at work right now, so I'll keep it short. The Laravel example is really terrible, when I finish work I'm going to clean it up. I just wanted to post this here to let people know that I'm going to clean it up.

    laravel 
    opened by CarwynNelson 18
  • Nette Framework w/out Doctrine

    Nette Framework w/out Doctrine

    Hello,

    As @fprochazka stated in his Nette Framework PR:

    Nette Framework https://nette.org/ is quite popular in Czech Republic, that's also why it got third in the PHP Frameworks 2015 survey on Sitepoint.

    I chose to use the default Nette\Database instead of Doctrine 2.

    Current TODO:

    • [x] Please do not use javascript magic. No Ajax, only classical request-response. When you order notes url should be /notes/?order=name, /notes/?order=-updated_at and so on. Take a look how other apps work.
    • [x] Forgot password bug. Enter not registered email and you'll see an exception.
    • [x] Something is wrong red error alert messages - strange positioning. Success green alerts messages work fine.
    • [x] Pad name in a pad column (All notes table) should be a link to appropriate pad page. Hide pad column in a table when viewing specific pad notes. Leave only name and date.

    Coding standards:

    • [x] Make sure you follow PHP/Nette coding standards
    • [x] Docblock comments
    opened by klimesf 15
  • Symfony: Updated framework version and codebase to match best practices

    Symfony: Updated framework version and codebase to match best practices

    The Symfony app was a bit outdated so I made those changes:

    • Upgraded Symfony version to 2.7.
    • Grouped NoteBundle and UserBundle inside AppBundle.
    • Moved Route declarations to controllers.
    • Moved translation files to app/resources.
    • Moved service declarations to app/services.yml.
    • Moved submit buttons from form classes into views.
    • Replaced the deprecated setDefaultOptions() calls by configureOptions()
    • Added docblocks and typehints where needed.
    opened by aminemat 10
  • dogeweb: a new, asyncio-based implementation.

    dogeweb: a new, asyncio-based implementation.

    Long story short, this is an implementation of Notejam that uses this language and this web framework. I hope there is no requirement that says platforms and frameworks have to be at least somewhat popular to make it into this repository. :-)

    Note that this implementation is somewhat different from the others; see the README for details. Also, while it should be relatively easy to test in theory, I haven't actually written any tests. (Because I'm really lazy.) Hopefully, that's not a big problem either.

    opened by pyos 7
  • Symfony: rewrite

    Symfony: rewrite

    The Symfony app is outdated and needs to be rewritten according to the best practices and using the latest LTS version 2.8.

    I can give it a go if you like.

    opened by aminemat 6
  • Symfony: Missing argument 1 for Doctrine\ORM\EntityRepository::find()

    Symfony: Missing argument 1 for Doctrine\ORM\EntityRepository::find()

    1. Click on a existing pad, e.g. http://127.0.0.1:8000/pads/5/notes
    2. Click on create new note, e.g. http://127.0.0.1:8000/notes/create?pad=5

    I see this warning with PHP-5.6:

    Warning: Missing argument 1 for Doctrine\ORM\EntityRepository::find(), called in /home/malkusch/workspace/oss/notejam/symfony/notejam/src/AppBundle/Controller/NoteController.php on line 75 and defined 500 Internal Server Error - ContextErrorException

    opened by malkusch 3
  • Possible other use of the application

    Possible other use of the application

    What will you think of trying to integrate your application as a new test type in http://www.techempower.com/benchmarks/ ?

    I created the same issue on their side : https://github.com/TechEmpower/FrameworkBenchmarks/issues/953

    I think it will be really great for the programming community as a whole !

    opened by krtek4 3
  • Flask: app factory

    Flask: app factory

    @komarserjio so, adding app factory will require some changes in flask-notejam structure.

    I've tried a couple of things and it turned out that:

    • it is probably better to leave things as they are now (I would, however, fix issues caused by outdated packages and brush up requirements.txt). App factories are definitely considered to be the best practice, but on the other hand flask-notejam is not that complex to use all of the best practices in it.
    • in order to implement factory function there should be implemented a Blueprint as well, which will be registered on the app inside factory function later. More about Blueprints here.

    Cheers, Jack.

    P.S. sorry for grammatical mistakes if there are any, I'm a bit sleepy : ]

    opened by jackunion 3
  • flask: Update Flask, use Poetry

    flask: Update Flask, use Poetry

    All dependencies updated and imports/functions changed fit newer conventions. Now runs cleanly on python3.8.

    Switch to more modern poetry setup instead of plain pip requirements.txt

    opened by whyman 0
  • Flask Improvements

    Flask Improvements

    • Flask: Enable environment variable based host and port settings
    • Flask: use schemaless URLs for external css
    • Flask: convert pad_id=0 to None to avoid DB constraint errors
    opened by spirius 0
  • Padrino (ruby) fails on bundle install

    Padrino (ruby) fails on bundle install

    Use ruby 2.3.0 installed using RVM on mac

    $ bundle install
    Fetching gem metadata from https://rubygems.org/..........
    Fetching rake 10.3.2
    Installing rake 10.3.2
    Fetching i18n 0.6.9
    Installing i18n 0.6.9
    Fetching json 1.8.1
    Installing json 1.8.1 with native extensions
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    
        current directory: /Users/sowen/.rvm/gems/ruby-2.3.0/gems/json-1.8.1/ext/json/ext/generator
    /Users/sowen/.rvm/rubies/ruby-2.3.0/bin/ruby -r ./siteconf20180207-17793-moicv3.rb extconf.rb
    creating Makefile
    
    current directory: /Users/sowen/.rvm/gems/ruby-2.3.0/gems/json-1.8.1/ext/json/ext/generator
    make "DESTDIR=" clean
    
    current directory: /Users/sowen/.rvm/gems/ruby-2.3.0/gems/json-1.8.1/ext/json/ext/generator
    make "DESTDIR="
    compiling generator.c
    In file included from generator.c:1:
    ./../fbuffer/fbuffer.h:175:47: error: too few arguments provided to function-like macro invocation
        VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                                                  ^
    /Users/sowen/.rvm/rubies/ruby-2.3.0/include/ruby-2.3.0/ruby/intern.h:797:9: note: macro 'rb_str_new' defined here
    #define rb_str_new(str, len) __extension__ (    \
            ^
    In file included from generator.c:1:
    ./../fbuffer/fbuffer.h:175:11: warning: incompatible pointer to integer conversion initializing 'VALUE' (aka
    'unsigned long') with an expression of type 'VALUE (const char *, long)' (aka 'unsigned long (const char *, long)')
    [-Wint-conversion]
        VALUE result = rb_str_new(FBUFFER_PAIR(fb));
              ^        ~~~~~~~~~~
    1 warning and 1 error generated.
    make: *** [generator.o] Error 1
    
    make failed, exit code 2
    
    Gem files will remain installed in /Users/sowen/.rvm/gems/ruby-2.3.0/gems/json-1.8.1 for inspection.
    Results logged to /Users/sowen/.rvm/gems/ruby-2.3.0/extensions/x86_64-darwin-17/2.3.0/json-1.8.1/gem_make.out
    
    An error occurred while installing json (1.8.1), and Bundler cannot continue.
    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
    
    In Gemfile:
      padrino was resolved to 0.12.2, which depends on
        padrino-admin was resolved to 0.12.2, which depends on
          padrino-core was resolved to 0.12.2, which depends on
            padrino-support was resolved to 0.12.2, which depends on
              activesupport was resolved to 4.1.1, which depends on
                json
    
    $ ruby --version
    ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin17]
    
    opened by spuder 2
  • /static/css/style.css 404

    /static/css/style.css 404

    Hi, I'm trying to run the Django app I can confirm that /static/css/style.css is being served when running the app using ./manage.py runserver but I've tried to run the app using Gunicorn and Nginx but it always gives me 404 and display the web app without any CSS/static content. I've also tried uWSGI but still the same

    Any thoughts?

    opened by EslamElHusseiny 0
Owner
Sergey Komar
Sergey Komar
A unified front-end for different queuing backends. Includes a REST server, CLI interface and daemon runners.

PHP-Queue A unified front-end for different queuing backends. Includes a REST server, CLI interface and daemon runners. Why PHP-Queue? Implementing a

CoderKungfu 646 Dec 30, 2022
Simple searching for postcodes to retrieve geographic information. Support for various API providers and a unified address/output format.

Postcode Search Simple searching for postcodes to retrieve geographic information. Support for various API providers and a unified address/output form

Gary Green 10 Nov 29, 2022
A php sample project written from scratch

A simple web app using php Jackson's 12 hour sample project using PHP Requirements PHP >= 7.3 Composer >= 2.1.8 Tech Stack PHP Dependency Manager Comp

Jackson Zhang 1 Oct 29, 2021
A php sample project written from scratch

A simple web app using php Jackson's 12 hour sample project using PHP Requirements PHP >= 7.3 Composer >= 2.1.8 Tech Stack PHP Dependency Manager Comp

Jackson Zhang 1 Oct 29, 2021
Learning Management System made in vanilla PHP to learn core concepts and usage of some basic utils

Learning Management System Learning Management System made in vanilla PHP to learn core concepts and usage of some basic utils. Report Bug · Request F

TitansLab 1 Mar 30, 2022
LMS to deal with Learn management system courses online....

LMS-Laravel About License About LMS-Laravel is a Learning Management System (or LMS) that facilitates the creation of educational content by allowing

Eng Hasan Hajjar 2 Sep 30, 2022
Now Introducing a new and easy way to manage your clients and MyOwnFreeHost hosting accounts.

Warning This is a beta version of Xera. Use it for testing purpose only. You are be responsible for any loss or damages that may occor from using this

Mahtab Hassan 23 Dec 15, 2022
DBase - An easy-to-use backend for mobile and web applications

DBase DBase is an easy-to-use backend for your mobile and web applications, host the files in an Ubuntu server and use the SDKs to perform CRUD operat

Frank Eno ~ XSGames 39 May 25, 2022
Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates.

Introduction Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates. Web Applica

Bytefury 6.7k Jan 1, 2023
Web based fantasy sports draft app

Hoot Draft makes running drafts for fantasy sports a real hoot! (dad jokes sold separately) Large color-coded draft board updates live during the draf

Matthew Orres 37 Sep 16, 2022
An open source self hosted notes and bookmarks taking web app.

Benotes An open source self hosted web app for your notes and bookmarks side by side. This project is currently in Beta. You may encounter bugs or err

null 264 Jan 2, 2023
This web app aims to manage alumnus databases.

Aplikasi Database Alumni Aplikasi berbasis web ini bertujuan untuk melakukan pendataan alumni. Aplikasi ini dibuat menggunakan framework CodeIgniter d

Ardi Cahyono 1 Nov 24, 2021
Simple RESTful Web App to find Real Estate Listings

Unreal Estate is a simple RESTful web app that allows the user to find Real Estate listings they might be interested in. Unreal Estate is built on Laravel 5 and PHP 7.

Jett Durham 0 Jun 12, 2019
Scrumwala: Your very own Scrum, Agile project management web app - built with Laravel

Scrumwala Your very own Scrum/Agile web app built with Laravel Features Create and manage projects with plan and work views Group issues in a project

null 255 Nov 2, 2022
Retrieve MySejahtera App's data from MySejahtera API and show to users via web browser. Written in PHP

MySejahtera-PHP-Web Retrieve MySejahtera App's data from MySejahtera API and show to users via web browser. Written in PHP. Disclaimer This web app is

Sam Sam 3 Oct 21, 2022
Laravel web app for signing up for community service opportunities

Community Service A Laravel web app for registering for service opportunities. Installation Make sure the following are installed on your system: Node

North Point Ministries 0 Mar 6, 2019
A mini social media like web app built using Laravel 8 & Vue JS 3

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Davidson Ramos 2 Feb 1, 2022
A fully responsive and dynamic web app to present all products for a start-up called Zarafah

A fully responsive and dynamic web app to present all products for a start-up called Zarafah. Made of HTML, CSS, TailwindCss, Vanilla JavaScript, AlpineJS, Laravelphp, Laravel Breeze, Jotform Api for forms submissions and Mailchimp Api for Newsletter.

Mostafa Said 7 Dec 11, 2022
Simple web app to easily create landing pages by dragging and dropping prebuilt blocks

Drag & Drop landing page builder made with Laravel 8, Vue.js 3 and Tailwind CSS

Isaac Souza 10 Nov 6, 2022