Git Product home page Git Product logo

agiladmin's Introduction

Agiladmin

software by Dyne.org

Build Status

A cross-platform application for payroll administration. Spreadsheet based environment for processing timesheets through project administration, fit for use by small and medium organisations and enterprises.

Agiladmin is used internally at Dyne.org to document working hours, calculate budgets and pay co-workers based on monthly efforts.

Agiladmin accepts and renders xlsx files to ease the integration with the workflow of expert financial admins without disrupting their tooling. It adopts Git as a backend to synchronise the collection of timesheets. It leverages the power of Clojure in data-centric applications to allow easy generation and customisation of graphics and reports related to personnel and projects.

Agiladmin should be considered software in ALPHA stage and for now is only used internally at Dyne.org to manage research projects according to the EU Horizon 2020 financial guidelines.

Users should consider this a technological preview and Dyne.org staff may or may not be able to help adopting this software at this stage. We are working on more documentation and once in BETA stage we will offer training and support.

Getting started

There are two ways to start Agiladmin, one is using docker and is recommended for development, another is locally using leiningen and is recommended for production.

Development setup with docker

Since agiladmin requires dependencies including a mongodb server for the authentication layer and the JVM it is handy to use docker to set it up for preview and for development. The procedure follows:

git clone https://github.com/dyne/agiladmin
git clone https://github.com/dyne/docker-dyne-software
cd docker-dyne-software/agiladmin
./build

At this point the agiladmin docker is built on your system, tagged as dyne/agiladmin:latest. To run it using as sourcecode the local directory of agiladmin, so that modifications can go live while coding, use:

./devel /home/user/path/to/agiladmin

This command will start the local copy of agiladmin source inside the docker and make the port 3000 reachable to connect from the host.

The source of agiladmin will still need some configurations in order to activate projects and a budgets repository with excel sheets and project configurations. Refer to the next section for details.

If an instance of Agiladmin is already setup then it can be cloned locally for testing and development simply going on the Configuration tab and communicating the ssh public key to the admin of the budgets git repository. Then Agiladmin should be configured with that git repository.

Production setup with leiningen

To start agiladmin is enough to have leiningen installed, then run:

lein ring server

This application expects a configuration file to be present in the base of its source directory, called agiladmin.yaml, example below:

# list of projects administered by agiladmin
# for each name there must be an equivalent config file
# in the configured budgets repository.
# see below for an example project config file
projects:
  - TINFOIL
  - DEVUAN
  - ADMIN

# settings for the webserver running agiladmin
webserver:
  anti-forgery: false
  ssl-redirect: false
  port: 8000
  host: localhost

budgets:
  # this is a git repository where all budgets are stored
  # agiladmin creates commits on the git and reads from it
  git: ssh://[email protected]/admin/budgets
  
  # this is the name of the ssh private key authorised to
  # access the git repository above. If not present will be
  # generated by agiladmin, the public part available on its
  # web interface under the "config" section
  ssh-key: id_rsa

  # this is where the budget git repo is cloned, relative to
  # the sourcecode folder of agiladmin
  path: budgets/

source:
  # if automatic updates are activated, agiladmin will update
  # its code from this git repository
  git: https://github.com/dyne/agiladmin
  update: no

# authentication configuration (smtp and mongodb)
just-auth:
  email-server: "mail.dyne.org"
  email-user: "xxxxxxxxxxxxxxxx"
  email-pass: "xxxxxxxxxxxxxxxx"
  email-address: "xxxxxxxxxxxxxxxx"
  email-admin: "xxxxxxxxxxxxxxxx"
  mongo-url: mongodb://localhost:27017/agiladmin
  mongo-user: demo
  mongo-pass: demo

Each project should also have its own configuration file, a commented example below:

# this is a small project example for agiladmin, to be placed
# in the budgets repository and called with the same project
# name as specified in the configuration, plus .yaml extension
DYNE:
  # date when the project started
  start_date: 01-01-1999
  # duration in months
  duration: 9999
  # average cost per hour
  cph: 30

  # individual rates per hour
  rates:
    L.Blissett: 40
    D.Maver: 30	

  # empty list of project tasks
  tasks: []

A more complex project may contain also tasks with descriptions, start dates, duration and paid person-months (pm). In such cases the projects will have a "gantt" chart rendered to indicate the progress. Here an example of such a configuration:

SOFTWARE:
  start_date: 01-12-2016
  duration: 36
  cph: 46.66

  rates:
    L.Blissett: 50
    D.Maver: 43

  tasks:
    - id: T1.1
      text: Distributed architecture specifications
      start_date: 01-12-2016
      duration: 36
      pm: 2

    - id: T1.2
      text: Privacy Design Strategies
      start_date: 01-12-2016
      duration: 24
      pm: 1

    - id: T1.3
      text: Lean methodology - use cases and requirements
      pm: 1
      start_date: 01-12-2016
      duration: 36

    - id: T4.5
      text: Lean testing, continous integration, interoperability 
      pm: 2
      start_date: 01-01-2018
      duration: 24

    - id: T5.1
      text: Pilots specifications and implementation
      pm: 2
      start_date: 01-07-2017
      duration: 30

    - id: T6.1
      text: Dissemination, Exploitation & Impact Assessment Strategy
      pm: 1
      start_date: 01-12-2016
      duration: 36

    - id: T6.2
      text: Stakeholders engagement & co-creation methodologies
      pm: 2
      start_date: 01-12-2016
      duration: 36

    - id: T6.4
      text: Open Standardization
      pm: 1
      start_date: 01-12-2016
      duration: 36

License

Copyright (C) 2016-2019 Dyne.org foundation

Sourcecode written and maintained by Denis Roio [email protected]

Designed in cooperation with Manuela Annibali [email protected]

With reviews and contributions by Andrea D'Intino [email protected]

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

agiladmin's People

Contributors

aspasia avatar jaromil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

momor666 aspasia

agiladmin's Issues

Month column padding in diff

The diff on timesheet upload breaks when months with 2 ciphers start (from october onwards) because the column width changes then signals a change in the whole timesheet. Fix by padding :month column name.

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.