Git Product home page Git Product logo

imglib's Introduction

imglib

An image organization tool

Is it ready yet?

Mostly, the backend works, but not everything has been tested yet so crashes are still possible. The frontend isn't ready yet.

How does it work?

This tool organizes Images by allowing them to be flagged with Tags, and put in any number of Albums which can also be flagged with Tags.
Images, Albums and Tags may or may not be flagged as NSFW (Not Safe For Work).

Images have an ID number, a NSFW flag, a format, a size, a checksum used for duplicate detection, an add date and optionally a name and/or description.
Images can be renamed and have their description altered. Their NSFW flag can also be modified.
Tags can be added to or removed from Images at any time.

Albums have an ID number, a NSFW flag, a name and an optional description. Albums can be renamed and have their description altered. Their NSFW flag can also be modified.
Images and Tags can be added to or removed from Albums at any time.

Tags have an ID number, a NSFW flag, a name, a color and an optional description.
Tags can have their description and color altered, but their name and NSFW flag are immutable.

A (more or less) REST API is provided to programatically access and alter the database, as well as a web interface (provided in the webui module) and other clients (as separate apps).

What does it use

This tool is programmed using luvit, mooncake, etlua, lsqlite3 and moonscript. It requires imagemagick, ffmpeg, mimetype (provided by libfile-mimeinfo-perl) and xxhash to work.

How do I install it?

  • Make sure you're on Linux. Other POSIX platforms (BSD/Cygwin) should work but are not tested
  • Install a C compiler, make and the lua5.1 headers
  • Clone this repo recursively git clone --recursive https://github.com/natnat-mc/imglib
  • Install luvit (you have to compile it yourself, the prebuit binaries don't work correctly for this) and luarocks
  • Install moonscript (luarocks install moonscript)
  • Point the BASEDIR env variable where the files would be stored (this will be needed at each start)
  • Run ./run to setup the files
  • Test the installation
  • Stop it with Ctrl+C

How to start the server as a daemon

  • Point the BASEDIR env variable
  • Run ./start

How to read the daemon logs

  • Point the BASEDIR env variable
  • Run ./logs

How to stop the daemon

  • Point the BASEDIR env variable
  • Run ./stop

What's the license?

For now, imglib is released under the GNU AGPL v3, which means that anyone who can interact with it must be able to access the source code used for this particular instance.

imglib's People

Contributors

natnat-mc avatar

Watchers

 avatar  avatar

imglib's Issues

Implement the rest of the API

A big part of the API is currently unimplemented. While it is still possible to use the software in its current state, performance and security would be greatly increased with the full API.

Packaging software so that it can be used out of the box

That means the following things:

  • release the compiled Lua sources, not the MoonScript
  • ideally minify them
  • patch require to load them from a single file ideally
  • load the SQL statements from a single file too
  • package all the dependencies, including luvit with our code
  • rewrite the control scripts to take all this into account

Module system

The software doesn't currently support modules, but this needs to change to support the web frontend

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.