{"id":13409067,"url":"https://github.com/stcarrez/ada-awa","last_synced_at":"2025-03-04T21:28:59.473Z","repository":{"id":25951692,"uuid":"29393324","full_name":"stcarrez/ada-awa","owner":"stcarrez","description":"Ada Web Application - Framework to build high performance secure web applications","archived":false,"fork":false,"pushed_at":"2024-10-20T21:21:48.000Z","size":121797,"stargazers_count":95,"open_issues_count":6,"forks_count":11,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-10-21T22:44:01.286Z","etag":null,"topics":["ada","database","https-server","orm","rest-framework","web-framework","web-performance"],"latest_commit_sha":null,"homepage":"","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stcarrez.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-01-17T14:20:56.000Z","updated_at":"2024-10-20T21:21:51.000Z","dependencies_parsed_at":"2024-02-01T20:08:56.964Z","dependency_job_id":"92cd044d-22dd-4984-8940-72b868ebe54d","html_url":"https://github.com/stcarrez/ada-awa","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stcarrez%2Fada-awa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stcarrez%2Fada-awa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stcarrez%2Fada-awa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stcarrez%2Fada-awa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stcarrez","download_url":"https://codeload.github.com/stcarrez/ada-awa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241924436,"owners_count":20043216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ada","database","https-server","orm","rest-framework","web-framework","web-performance"],"created_at":"2024-07-30T20:00:57.751Z","updated_at":"2025-03-04T21:28:59.446Z","avatar_url":"https://github.com/stcarrez.png","language":"Ada","funding_links":[],"categories":["Frameworks","Ada","database"],"sub_categories":["Web"],"readme":"# Ada Web Application\n\n[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/awa.json)](https://alire.ada.dev/crates/awa)\n[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/awa_unit.json)](https://alire.ada.dev/crates/awa_unit)\n[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-awa/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-awa/summary)\n[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-awa/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-awa/xunits)\n[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-awa/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-awa/summary)\n[![Documentation Status](https://readthedocs.org/projects/ada-awa/badge/?version=latest)](https://ada-awa.readthedocs.io/en/latest/?badge=latest)\n[![Download](https://img.shields.io/badge/download-2.5.0-brightgreen.svg)](http://download.vacs.fr/ada-awa/awa-all-2.5.0.tar.gz)\n[![License](https://img.shields.io/badge/license-APACHE2-blue.svg)](LICENSE)\n![Commits](https://img.shields.io/github/commits-since/stcarrez/ada-awa/2.5.0.svg)\n\nAda Web Application is a framework to build a Web Application in Ada 2012.\nThe framework provides several ready to use and extendable modules that are common\nto many web application.  This includes the login, authentication, users, permissions,\nmanaging comments, tags, votes, documents, images.  It provides a complete blog,\nquestion and answers and a wiki module.\n\nAWA simplifies the Web Application development by taking care of user management with\nGoogle+, Facebook authentication and by providing the foundations on top of which you\ncan construct your own application.  AWA provides a powerful permission management\nthat gives flexibility to applications to grant access and protect your user's resources.\n\n![AWA Features](https://github.com/stcarrez/ada-awa/wiki/images/awa-features.png)\n\nAWA integrates the following projects:\n\n* Ada Server Faces (https://github.com/stcarrez/ada-asf)\n* Ada Servlet   (https://github.com/stcarrez/ada-servlet)\n* OpenAPI Ada   (https://github.com/stcarrez/swagger-ada)\n* ADO           (https://github.com/stcarrez/ada-ado)\n* Ada Util      (https://github.com/stcarrez/ada-util)\n* Ada Wiki      (https://github.com/stcarrez/ada-wiki)\n* Ada EL        (https://github.com/stcarrez/ada-el)\n* Ada Security  (https://github.com/stcarrez/ada-security)\n* Ada Keystore  (https://github.com/stcarrez/ada-keystore)\n* Ada LZMA      (https://github.com/stcarrez/ada-lzma)\n* Dynamo        (https://github.com/stcarrez/dynamo)\n\nThese projects are distributed under the Apache License 2.0 or MIT license for Ada LZMA.\n\nAWA relies on the following external projects:\n\n* AWS      (https://libre.adacore.com/libre/tools/aws/)\n* XMLAda   (https://libre.adacore.com/libre/tools/xmlada/)\n\nThese projects are provided as tarball in 'external' directory.\nThey are distributed under different licenses (GNU GPL).\n\nThe AWA framework integrates a set unit tests and provides a framework\nto build unit tests for AWA applications.   The unit tests are based on\nAda Util test framework which itself is built on top of the excellent\nAhven test framework (Ahven sources is integrated in Ada Util).\nYou may get Ahven or Aunit at:\n\n* Ahven    (http://ahven.stronglytyped.org/)\n* AUnit    (https://libre.adacore.com/libre/tools/aunit/)\n\n## Version 2.6.0 - Under development\n  - Use AWS 24.0 from Alire\n  - Cleanup build environment to drop configure\n\n## Version 2.5.0 - Sep 2023\n  - Feature #22: Add command line support to register a new user\n  - Feature #23: Add command line for database schema migration\n  - Feature #25: Update database schema for ADO 2.4\n  - Feature #26: Support to enable/disable user account\n  - Feature #27: New option for the list command to print the last audit fields\n  - Feature #31: Use `\u003cheader\u003e`, `\u003cfooter\u003e`, `\u003cmain\u003e` for HTML layouts\n  - Feature #32: Support several authentication methods for a user\n  - Feature #35: Blog post creation improvement\n  - Fix #30: Configuration to authenticate with GitHub is incomplete\n  - Fix #33: Application name not recognized by some AWA commands\n  - Fix #34: Configuration to authenticate with Gitlab is incomplete\n  - Fix #37: Cannot use entity-permission for the url-policy\n  - Fix #38: Image module does not handle SVG correctly\n  - Fix #45: AWA start command option --max-upload-size and --max-form-size don't accept a value\n  - Update Trumbowyg editor to version 2.26.0\n  - Use Markdown for the AWA comments and questions modules\n\n[List all versions](https://github.com/stcarrez/ada-awa/blob/master/NEWS.md)\n\n# Using git\n\nThe AWA framework uses git submodules to integrate several other\nprojects.  To get all the sources, use the following commands:\n```\n   git clone --recursive https://github.com/stcarrez/ada-awa.git\n   cd ada-awa\n```\n\n# Development Host Installation\n\nThe PostgreSQL, MySQL and SQLite development headers and runtime are necessary\nfor building the Ada Database Objects driver.  The configure script will use\nthem to enable the ADO drivers. The configure script will fail if it does not\nfind any database driver.\n\n## Ubuntu\n\nFirst to get the LZMA and CURL support, it is necessary to install the following\npackages before configuring AWA:\n\n```\nsudo apt-get install unzip liblzma-dev libcurl4-openssl-dev\n```\n\nMySQL Development installation:\n```\nsudo apt-get install libmysqlclient-dev\n```\n\nMariaDB Development installation:\n```\nsudo apt-get install mariadb-client libmariadb-dev\n```\n\nSQLite Development installation:\n```\nsudo apt-get install sqlite3 libsqlite3-dev\n```\n\nPostgreSQL Development installation:\n```\nsudo apt-get install postgresql-client libpq-dev\n```\n\n## FreeBSD 13\n\nFirst to get the LZMA, XML/Ada and CURL support, it is necessary\nto install the following packages before configuring AWA:\n\n```\npkg install gnat12 gprbuild lzma curl-7.87.0 xmlada\n```\n\nMariaDB Development installation:\n```\npkg install mariadb106-client mariadb106-client-10.4.7 mariadb106-server-10.6.11\n```\n\nSQLite Development installation:\n```\npkg install sqlite3\n```\n\nPostgreSQL Development installation:\n```\npkg install postgresql15-client-15.1 postgresql15-server-15.1_1\n```\n\n\n## Windows\n\nIt is recommended to use msys2 available at https://www.msys2.org/\nand use the `pacman` command to install the required packages.\n\n```\npacman -S git\npacman -S make\npacman -S unzip\npacman -S base-devel --needed\npacman -S mingw-w64-x86_64-sqlite3\n```\n\nFor Windows, the installation is a little bit more complex and manual.\nYou may either download the files from MySQL and SQLite download sites\nor you may use the files provided by Ada Database Objects and\nAda LZMA in the `win32` directory.\n\nFor Windows 32-bit, extract the files:\n\n```\ncd ada-ado/win32 \u0026\u0026 unzip sqlite-dll-win32-x86-3290000.zip\ncd ada-lzma/win32 \u0026\u0026 unzip liblzma-win32-x86-5.2.4.zip\n```\n\nFor Windows 64-bit, extract the files:\n\n```\ncd ada-ado/win32 \u0026\u0026 unzip sqlite-dll-win64-x64-3290000.zip\ncd ada-lzma/win32 \u0026\u0026 unzip liblzma-win64-x64-5.2.4.zip\n```\n\nIf your GNAT 2019 compiler is installed in `C:/GNAT/2019`, you may\ninstall the liblzma, MySQL and SQLite libraries by using msys cp with:\n\n```\ncp ada-lzma/win32/*.dll C:/GNAT/2021/bin\ncp ada-lzma/win32/*.dll C:/GNAT/2021/lib\ncp ada-lzma/win32/*.a C:/GNAT/2021/lib\ncp ada-ado/win32/*.dll C:/GNAT/2021/bin\ncp ada-ado/win32/*.dll C:/GNAT/2021/lib\ncp ada-ado/win32/*.lib C:/GNAT/2021/lib\ncp ada-ado/win32/*.a C:/GNAT/2021/lib\n```\n\n## Ada Web Server\n\nThe [Ada Web Server](https://libre.adacore.com/libre/tools/aws/) should be compiled with the\nSSL support if you want to use the [OAuth 2.0](https://oauth.net/2/) protocol and integrate\nwith Google, GitHub and GitLab authentication systems.  The AWS version shipped with GNAT 2021\nwill not work because it does not support SSL.\n\nYou may build AWS by using:\n\n```\n   git clone --recursive -b 20.2 https://github.com/AdaCore/aws\n   cd aws\n   make SOCKET=openssl setup build install\n```\n\n# Building AWA\n\nThe framework uses the `configure` script to detect the build environment.\nIn most cases you will configure, build and install with the following commands:\n```\n   ./configure --prefix=/usr/local\n   make\n   make install\n```\n\n# Next steps\n\nOnce you have built and installed the Ada Web Application framework,\nyou can use the `dynamo` command to create your first project by using\nthe `create-project` command:\n\n```\ndynamo create-project -l apache atlas your-email@domain.com\n```\n\nHave a look at the [Dynamo(1)](https://github.com/stcarrez/dynamo/wiki/Dynamo)\ndocumentation for the detail of the `dynamo` command options.\n\nThen, configure and build the project by using:\n\n```\ncd atlas\n./configure\nmake generate build\n```\n\nAt this step, you will get the binary server in `bin/atlas-server` and you can launch\nit with:\n\n```\n./bin/atlas-server setup\n```\n\nThe generated binary server provides several commands that you can use.\nThe list of commands and their options is described in:\n[command (1)](https://github.com/stcarrez/ada-awa/blob/master/awa/docs/command.md).\n\nFollow the Tutorial section and the\n[Ada Web Application programmer's guide](https://ada-awa.readthedocs.io/en/latest/)\nto proceed to the next development steps.\n\n# Docker\n\nA docker container is available for those who want to try AWA without installing\nand building all required packages\n(See [Ada Web Application on Docker](https://hub.docker.com/r/ciceron/ada-awa/).\nTo use the AWA docker container you can\nrun the following commands:\n\n```\n   sudo docker pull ciceron/ada-awa\n```\n\n# Documentation\n\nThe Ada Web Application programmer's guide describes how to setup the framework,\nhow you can setup and design your first web application with it,\nand it provides detailed description of AWA components:\n\n  * [Ada Web Application programmer's guide](https://ada-awa.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-awa/blob/master/awa/docs/awa-book.pdf)\n  * [Ada Server Faces Programmer's Guide](https://ada-asf.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-asf/blob/master/docs/asf-book.pdf)\n  * [Ada Database Objects Programmer's Guide](https://ada-ado.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-ado/blob/master/docs/ado-book.pdf)\n  * [Ada Security Programmer's Guide](https://ada-security.readthedocs.io/en/latest/)\n  * [Ada Wiki Programmer's Guide](https://ada-wiki.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-wiki/blob/master/docs/wiki-book.pdf)\n  * [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/)\n  * https://github.com/stcarrez/ada-awa/wiki/Documentation\n\n# Tutorial\n\nYou may read the following tutorials to lean more about the technical details about\nsetting up and building an Ada Web Application:\n\n  * Step 1: [Ada Web Application: Setting up the project](https://blog.vacs.fr/vacs/blogs/post.html?post=2014/05/08/Ada-Web-Application-Setting-up-the-project)\n  * Step 2: [Ada Web Application: Building the UML model](https://blog.vacs.fr/vacs/blogs/post.html?post=2014/05/18/Ada-Web-Application--Building-the-UML-model)\n  * Step 3: [Review Web Application: Creating a review](https://blog.vacs.fr/vacs/blogs/post.html?post=2014/06/14/Review-Web-Application-Creating-a-review)\n  * Step 4: [Review Web Application: Listing the reviews](https://blog.vacs.fr/vacs/blogs/post.html?post=2014/07/19/Review-Web-Application-Listing-the-reviews)\n\n# Presentations\n\n  * [Persistence with Ada Database Objects](https://fr.slideshare.net/StephaneCarrez1/persistence-with-ada-database-objects-ado) FOSDEM 2019\n  * [Ada for Web Development](https://fr.slideshare.net/StephaneCarrez1/ada-techdays2019awa) AdaCore Tech Days 2019\n  * [Secure Web Applications with AWA](https://fr.slideshare.net/StephaneCarrez1/secure-web-applications-with-awa) FOSDEM 2019\n  * [Protect Sensitive Data with Ada Keystore](https://fr.slideshare.net/StephaneCarrez1/protect-sensitive-data-with-ada-keystore) Ada devroom FOSDEM 2020\n\n# Articles\n\n  * [Use Ada for Your Web Development | Electronic Design](https://www.electronicdesign.com/technologies/embedded-revolution/article/21119177/use-ada-for-your-web-development)\n\n# Sites Using AWA\n\n  * [Java 2 Ada](https://blog.vacs.fr/)\n  * [Ada France](https://www.ada-france.org/adafr/index.html)\n  * [Atlas](https://demo.vacs.fr/atlas/index.html)\n  * [Jason Project Manager](https://vdo.vacs.fr/vdo/index.html)\n  * [Porion Build Manager](https://porion.vacs.fr/porion/index.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstcarrez%2Fada-awa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstcarrez%2Fada-awa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstcarrez%2Fada-awa/lists"}