GithubHelp home page GithubHelp logo

huridocs / uwazi Goto Github PK

View Code? Open in Web Editor NEW
210.0 28.0 75.0 155.34 MB

Uwazi is a web-based, open-source solution for building and sharing document collections

Home Page: http://www.uwazi.io

License: MIT License

JavaScript 44.40% Shell 0.13% TypeScript 50.80% SCSS 2.83% Dockerfile 0.01% CSS 1.82% HTML 0.01%
documents

uwazi's Introduction

Uwazi Logo

Uwazi CI Maintainability Test Coverage

Uwazi is a flexible database application to capture and organise collections of information with a particular focus on document management. HURIDOCS started Uwazi and is supporting dozens of human rights organisations globally to use the tool.

Uwazi | HURIDOCS

Read the user guide

Installation guide

Dependencies

Before anything else you will need to install the application dependencies:

Production

Install/upgrade procedure

Development

If you want to use the latest development code:

$ git clone https://github.com/huridocs/uwazi.git
$ cd uwazi
$ yarn install
$ yarn blank-state

If you want to download the Uwazi repository and also download the included git submodules, such as the uwazi-fixtures, which is used for running the end-to-end testing:

$ git clone --recurse-submodules https://github.com/huridocs/uwazi.git
$ cd uwazi
$ yarn install

If the main Uwazi repository had already been cloned/downloaded and now you want to load its sub-modules, you can run

$ git submodule update --init

There may be an issue with pngquant not running correctly. If you encounter this issue, you are probably missing the library libpng-dev. Please run:

$ sudo rm -rf node_modules
$ sudo apt-get install libpng-dev
$ yarn install

Docker

Infrastructure dependencies (ElasticSearch, ICU Analysis Plugin, MongoDB, Redis and Minio (S3 storage) can be installed and run via Docker Compose. ElasticSearch container will claim 2Gb of memory so be sure your Docker Engine is alloted at least 3Gb of memory (for Mac and Windows users).

$ ./run start

Development Run

$ yarn hot

This will launch a webpack server and nodemon app server for hot reloading any changes you make.

Webpack server

$ yarn webpack-server

This will launch a webpack server. You can also pass --analyzeto get detailed info on the webpack build.

Testing

Unit and Integration tests

We test using the JEST framework (built on top of Jasmine). To run the unit and integration tests, execute

$ yarn test

This will run the entire test suite, both on server and client apps.

Some suites need MongoDB configured in Replica Set mode to run properly. The provided Docker Compose file runs MongoDB in Replica Set mode and initializes the cluster automatically, if you are using your own mongo installation Refer to MongoDB's documentation for more information.

End to End (e2e)

For End-to-End testing, we have a full set of fixtures that test the overall functionality. Be advised that, for the time being, these tests are run ON THE SAME DATABASE as the default database (uwazi_developmet), so running these tests will DELETE any existing data and replace it with the testing fixtures. DO NOT RUN ON PRODUCTION ENVIRONMENTS!

Running end to end tests requires a running Uwazi app.

Running tests with Nightmare

$ yarn hot

On a different console tab, run

$ yarn e2e

Running tests with Puppeteer

$ DATABASE_NAME=uwazi_e2e INDEX_NAME=uwazi_e2e yarn hot

On a different console tab, run

$ yarn e2e-puppeteer

Note that if you already have an instance running, this will likely throw an error of ports already been used. Only one instance of Uwazi may be run in the same port at the same time.

Default login

The application's default login is admin / change this password now

Note the subtle nudge ;)

System Requirements

  • For big files with a small database footprint (such as video, audio and images) you'll need more HD space than CPU or RAM
  • For text documents you should consider some decent RAM as ElasticSearch is pretty greedy on memory for full text search

The bare minimum you need to be able to run Uwazi on-prem without bottlenecks is:

  • 4 GB of RAM (reserve 2 for Elastic and 2 for everything else)
  • 2 CPU cores
  • 20 GB of disk space

For development:

  • 8GB of RAM (depending on whether the services are running)
  • 4 CPU cores
  • 20 GB of disk space

uwazi's People

Contributors

bdittes avatar daneryl avatar danicatalan avatar dependabot[bot] avatar duncanka avatar elreplicante avatar elric-wamugu avatar enigmatic-bacon avatar fnocetti avatar gabriel-piles avatar grafitto avatar habbes avatar konzz avatar laszlokecskes avatar mfacar avatar nestorsalceda avatar omimakhare avatar rafapolit avatar rhnsharma avatar rustedgrail avatar samschaevitz avatar simpanoi-95 avatar snyk-bot avatar txau avatar varovaro avatar vkozinec avatar vorburger avatar whyfrycek avatar yacky avatar zasa-san avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

uwazi's Issues

Test code review: replace switch statements with object literals

@daneryl @konzz

Testing how we can use issues for code review. So far I'm not happy with the inline comments (blame). Github's interface for this sucks big time. Comments get lost, there is no way of tracking what conversations are active etc. The official suggestion is to use pull requests, which I think is a total overkill unless you are conducting a full code review.

Code style suggestion, replace switch statements with object literals: https://toddmotto.com/deprecating-the-switch-statement-for-object-literals.

https://github.com/huridocs/UwaziDocs/blob/9fcc2009263a36f4885b0e0bcc7bd70dfef2c973/app/react/Templates/components/FilterSuggestions.js

getTypeIcon(type) {
    let icon;
    switch (type) {
    case 'checkbox':
      icon = 'fa fa-check-square-o';
      break;
    case 'select':
      icon = 'fa fa-sort';
      break;
    case 'list':
      icon = 'fa fa-list';
      break;
    case 'date':
      icon = 'fa fa-calendar';
      break;
    default:
      icon = 'fa fa-font';
    }

    return icon;
  }

Advanced search

Take search to the next level where users can even choose how the want filters to stack (AND/OR) and other options TBD.

Code duplication in filter icon selection

Code duplication? this could even lead to displaying different icons if the code is changed separately.

https://github.com/huridocs/UwaziDocs/blob/9fcc2009263a36f4885b0e0bcc7bd70dfef2c973/app/react/Templates/components/MetadataProperty.js

let iconClass = 'fa fa-font';
    if (this.props.type === 'select') {
      iconClass = 'fa fa-sort';
    }

    if (this.props.type === 'list') {
      iconClass = 'fa fa-list';
    }

    if (this.props.type === 'date') {
      iconClass = 'fa fa-calendar';
    }

    if (this.props.type === 'checkbox') {
      iconClass = 'fa fa-check-square-o';
    }

https://github.com/huridocs/UwaziDocs/blob/9fcc2009263a36f4885b0e0bcc7bd70dfef2c973/app/react/Templates/components/FilterSuggestions.js

getTypeIcon(type) {
    let icon;
    switch (type) {
    case 'checkbox':
      icon = 'fa fa-check-square-o';
      break;
    case 'select':
      icon = 'fa fa-sort';
      break;
    case 'list':
      icon = 'fa fa-list';
      break;
    case 'date':
      icon = 'fa fa-calendar';
      break;
    default:
      icon = 'fa fa-font';
    }

    return icon;
  }

Display breadcrumbs

Let users know exactly where they are, ie:

metadata > create new
metadata > edit > decision
library > view > Some document title
uploads > view > Some document title
library > view > Some document title > create reference to a paragraph > Some other document title

Improved filtering (faceted browsing style)

  • Display amount of results and refine the search filters.

ie. In faceted browsing we can see upfront the amount of results per filter, as in a country filter:
Argentina (5)
Peru (1)
Ecuador (0) -> This one may even not show up if it has zero results.

Upon selection, other "subfilters" should be updated to reflect the actual results if combined with the active filters.

Slow typing in document type title

When creating a document type in the metadata section, is some sort of realtime duplicate validation going on? We should add a time trigger for that otherwise is unusable for slow connections.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.