rockhopsoft/survloop

Survloop是一个开源数据引擎,用于设计数据库和创建移动友好型用户界面以填充数据。

v0.3.7 2022-03-16 15:29 UTC

README

Laravel License: GPL v3

目录

关于

在Mac磁盘上存储的代码字节数量

  • PHP控制器 ~ 1.9MB (44%)
  • Blade HTML模板视图 ~ 1.56MB (36%)
  • Blade模板中的JavaScript/jQuery ~ 201KB (5%)
  • Blade模板中的CSS ~ 143KB (3%)
  • Survloop生成的PHP Eloquent数据表模型 ~ 221KB (5%)
  • Survloop生成的PHP Laravel数据库迁移和种子 ~ 291KB (7%)

Survloop是一个基于Laravel的引擎,用于构建以开放数据收集和发布为主体的网站。这是一个数据库设计和调查生成系统,尽管它将越来越多地成为解决许多基于Web问题的灵活工具。

它目前正在持续且大量的开发中,2021年发生了许多事情,几乎准备上线。我计划在接下来的几周内提供更多文档。感谢您的兴趣和耐心!

该软件最初是为了构建Open Police系统而开发的。它最初是一个内部工具,用于设计我们的数据库,并原型化调查生成。然后它被适配到Laravel框架,并继续向数据集中型网站的内容管理系统方向发展。

即将推出的Open Police网络应用是此引擎的最佳实时安装,对该项目和Survloop用户体验的反馈可以通过提交过程的结束时进行:https://openpolice.org/filing-your-police-complaint 使用该引擎设计的数据库以及指定用户体验的分支树:/db/OP /tree/complaint 通过其他方法,结果数据还可以作为包含自动生成的模式的XML提供,例如:/complaint-xml-schema /complaint-xml-example /complaint-xml-all

运行Survloop的其他项目:Cannabis PowerScore (GitHub)。

Survloop.org使用的安装是目前Survloop裸骨扩展的最佳示例
github.com/rockhopsoft/survlooporg

要求

入门

在Homestead上安装Laravel和Survloop

完整的安装说明也描述了如何使用VirtualBox、Vargrant和Laravel的Homestead来设置开发环境。对于这些说明,新项目目录是'survproject'。

% composer create-project laravel/laravel survproject "8.5.*"
% cd survproject

编辑环境文件中的这些行以连接默认的MYSQL数据库

% nano .env
APP_NAME="My Survloop Project"
APP_URL=http://survproject.local

DB_HOST=localhost
DB_PORT=33060
DB_CONNECTION=mysql
DB_DATABASE=survproject
DB_USERNAME=homestead
DB_PASSWORD=secret

接下来,安装Laravel的内置用户认证工具和Survloop

% php artisan key:generate
% php artisan cache:clear
% COMPOSER_MEMORY_LIMIT=-1 composer require rockhopsoft/survloop
% nano composer.json

从Laravel安装的根目录中,更新composer.json以要求并轻松引用Survloop

...
"autoload": {
    ...
    "psr-4": {
        ...
        "RockHopSoft\\Survloop\\": "vendor/rockhopsoft/survloop/src/",
        "Predis\\": "vendor/predis/predis/src/",
    }
    ...
}, ...

似乎我们还需要手动编辑config/app.php

% nano config/app.php
...
'providers' => [
    ...
    App\Providers\FortifyServiceProvider::class,
    RockHopSoft\Survloop\SurvloopServiceProvider::class,
    ...
],
...
'aliases' => [
    ...
    'Survloop' => 'RockHopSoft\Survloop\SurvloopFacade',
    ...
], ...

如果是在服务器上安装,您可能还需要在以下步骤之前修复一些权限...

% chown -R www-data:www-data storage bootstrap/cache resources/views database app/Models

清除缓存并发布包迁移...

% php artisan config:clear
% php artisan route:clear
% php artisan view:clear
% echo "0" | php artisan vendor:publish --force
% composer dump-autoload
% curl http://survproject.local/css-reload

对于某些数据库(如由DigitalOcean管理的一些数据库),您可能需要调整Laravel迁移

% nano database/migrations/2014_10_12_100000_create_password_resets_table.php
% nano database/migrations/2019_08_19_000000_create_failed_jobs_table.php

在每个文件中的"Schema::create"行之前添加此行

\Illuminate\Support\Facades\DB::statement('SET SESSION sql_require_primary_key=0');

然后初始化数据库

$ php artisan migrate
$ php artisan db:seed --class=SurvloopSeeder
$ php artisan db:seed --class=ZipCodeSeeder
$ php artisan db:seed --class=ZipCodeSeeder2
$ php artisan db:seed --class=ZipCodeSeeder3
$ php artisan db:seed --class=ZipCodeSeeder4

初始化Survloop安装

然后浏览到主页应该会提示您创建第一个管理员用户账户
http://survloop.local

如果一切看起来很糟糕,那么请手动加载样式表等
http://survloop.local/css-reload

登录为管理员后,此链接会重建许多支持文件
http://survloop.local/dashboard/settings?refresh=2

其他包安装

Excel工具使用maatwebsite/excel,您可能在Ubuntu上需要这个

$ sudo apt-get install php7.4-zip

...或这个在Mac上

$ brew update
$ brew install php@7.4
$ brew link php@7.4 --force

如果您计划生成PDF,那么您还应该下载安装 Ghostscript。这是针对Ubuntu的,它可能已经安装了

$ sudo apt-get install ghostscript

这可以在Mac的Homestead上工作,使用Homebrew

$ brew install ghostscript

文档

关于Survloop的代码库和数据库设计

更好的文档刚刚开始创建...
survloop.org/package-files-folders-classes

安装后,该系统的数据库设计文档可以在https:///dashboard/db/all找到。该系统的调查设计可以在https:///dashboard/surv-1/map?all=1&alt=1或像上面那样的公开可见链接中找到。
survloop.org/db/SL

路线图

这是下一个版本(1.0)的待办事项列表。这是我第一次在Laravel或GitHub上构建。非常抱歉。

  • 修复所有必要的问题,以发布最小可行性产品,并启动开放警察投诉。
  • 整合使用Laravel兼容包的MFA选项。
  • 升级数据库和图形设计,以便用于管理员工具,到目前为止,这些工具仅由作者使用。
  • 代码注释,学习和采用更多社区规范。
  • 添加足够的单元测试。希望提高对象/类的组织。
  • 改进导入/导出工作流程,用于复制/移动安装。
  • 由Survloop本身生成所有管理员工具。
  • 在节点级别添加多语言支持(调查和网页),首先,然后是数据库设计。
  • 在所有级别添加多语言支持。
  • 将更多Survloop(较旧)代码转换为利用更多Laravel内置功能。

贡献指南

请帮助我了解在这个社区中共享代码的最佳实践。请报告您在问题页面上发现的任何问题。

报告安全漏洞

我们希望确保Survloop是一个对所有人安全的HTTP开放数据平台。如果您在Survloop软件或Survloop.org中发现了安全漏洞,我们感谢您以负责任的方式向我们披露。

公开披露漏洞可能会让整个社区处于风险之中。如果您发现了安全问题,请发送电子邮件至rockhoppers at runbox.com。我们将与您合作,确保我们了解问题的范围,并完全解决您的担忧。我们将rockhoppers at runbox.com收到的邮件视为最高优先级,并努力尽快解决任何出现的问题。

一旦安全漏洞被修复,将尽快部署新版本。