Giter Club home page Giter Club logo

server's Introduction

My home-built database solution for managing personal data and interacting with other projects.

Current features include:

  • Full support for modern Android/iOS mobile as well as desktop browsers.
  • A fully featured library/book cataloging system: type the name of a book, click the correct match, then scan a QR code, barcode, or RFID tag. Bam, it's now cataloged under your name, and you can easily find it later, specify if someone's borrowing it, transfer ownership, etc.
  • File storage with advanced tagging functionality and minimal limitations. Want to upload 75 photos of your dog? Can do, just select them all and add the "dog" and "my-dog's-name" tags when uploading. Has it been 10 years and you can't find those images? Just search for your dog's name. Want to download all the results from that search? Just click the "download all" button. Don't want anyone else to see that video of you in a tutu? Just mark the file as "only visible to me".
  • Allow users to report bugs, request new features, and see what features are planned or in progress.
  • Weather Alerts integration: if you moved, changed your phone number, want to change the default temperature thresholds, or just disable your alerts altogether, you can do so in the user settings page.
  • Subsonic Music Server Integration: Search albums, and interact with the Library to show what books also have an audiobook version.
  • Dynamic theme: If you don't like the default colors or styling, you can always change it in user settings.
  • Fine-grained user control:
    • User Isolation: Sometimes you don't want certain groups of users to interact (e.g. in-laws, different friend groups, etc). If that's the case, admins can assign a "group" to users. Any users not in the same group will not be able to see or interact with each other's data.
    • User Permissions: Control what type of actions users are allowed to do, and what they're allowed to see.
  • Bot friendly: admins can generate API tokens to allow bots or other services to securely make requests. These tokens can have the same permissions restrictions applied to them as users! Check out the Python API repo for a fast way to get started.

Every one of the above features is fully optional, and can be enabled or disabled from the admin options.


Setup

This application requires some flavor of Linux (tested on Ubuntu 22), Python ≥ 3.10, MongoDB ≥ 5, and OpenJDK ≥ 8.


To get all set up, first download the repo, then install dependencies:

git clone https://github.com/ZacharyWesterman/server.git --recursive
cd server
poetry install

If you plan to enable the file module, you'll want to make sure you have a place to store blob data that is uploaded to the site. It can be any directory, but going forward we'll assume it's /var/blob_data.

Also, make sure you know the MongoDB URLs of the various databases involved. If not specified at run-time, these will all default to localhost.

Currently there are two databases, one for weather users (see my weather-alerts repo ), and one for all other data.


To run this application with minimal params:

./run.sh --blob-path=/var/blob_data

Additional parameters are available. You can run ./run.sh --help to see them all.

server's People

Contributors

zacharywesterman avatar

Watchers

Kostas Georgiou avatar  avatar  avatar

server's Issues

Don't hard-code DB URL

Mongo url should be specified in params or a config. Can default to localhost if not otherwise specified.

Template syncing sometimes runs too frequently

If you run _.sync() on an element multiple times, it does not check if we're already syncing that element. If we are, then it should cancel the old sync (or just adjust to use new timing)

Make a readme

Documentation is lacking, need to fix that. Can start by writing a nice readme.

Tagging system

every uploaded file / created document needs to be able to be tagged so that users can more easily find them later.

User Clearances

Not every user should be an admin. likewise, some users will probably need to be restricted from viewing certain screens? also probably should not allow non-admins to edit other users' data.

Doxygen-like auto docs

Need a solution to let me easily keep everything documented (similar to doxygen? But for python. And maybe JS/css/html)

Upload/Download system

Users need to be able to upload and download files. Maybe store them as generic blob data? from a programming perspective, would be nice to have a generic "media" type, and the application automatically determines what type of media it is.

Reference user IDs, not usernames

currently blob data has a "username" field. this needs to be the oid of the user, otherwise changing the username would unassociate all the blobs from that user.

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.