Name | Modified | Size | Downloads / Week |
---|---|---|---|
npdb_p-1-6-0.tgz | 2025-07-26 | 50.0 MB | |
Readme.md | 2025-07-25 | 10.9 kB | |
npdb_p-1-5-0.tgz | 2025-05-20 | 50.1 MB | |
npdb_p-1-4-1.tgz | 2025-02-09 | 50.1 MB | |
ReadmeWin.md | 2024-11-24 | 4.2 kB | |
npdb_p-1-3-17.tgz | 2024-11-21 | 53.1 MB | |
ReadmeGo.md | 2024-11-21 | 1.2 kB | |
NPDb-Intro.pdf | 2024-08-10 | 132.9 kB | |
Readme-marketing.md | 2023-11-28 | 2.6 kB | |
Update-note.txt | 2023-07-04 | 1.1 kB | |
Totals: 10 Items | 203.4 MB | 2 |
NPDB
NPDB stands for the Nostalgic Photo DataBase (platform). It has nothing in common with The National Practitioner Data Bank (also NPDB). The system was developed in Linux, tested on Ubuntu 18.04, 20.04, 22.04 and 24.04. NPDB may be installed on MS Windows through WSL (Windows Subsystem for Linux) and on Chrome OS using "Linux development environment" option.
What is NPDB?
Nearly everyone possesses a vast collection of photographs—some old, some recent—whether stored in physical albums, scattered in piles, or organized across numerous digital folders on computers and cloud storage. Yet, locating a specific image within this overwhelming volume can feel nearly impossible. If you wish to make your photo archive searchable and accessible within just a few clicks, NPDB may be the solution you need.
NPDB is inherently personal. Only you can accurately identify the people in your older photographs, recall the dates and locations, and understand the context in which they were taken. Even newer photos (from around 2012 onward) may contain metadata such as date and location, but these details rarely capture the full meaning or significance of the image.
This platform offers simple yet powerful tools to help you build a personalized photo archive, complete with tags tailored to your own needs and interpretations. It also includes a tool for instant access to images with just a few mouse clicks.
Admittedly, creating a comprehensive photo repository requires time and effort. However, once established, you will enjoy the lasting benefit of quickly retrieving meaningful images as your collection continues to grow.
NPDB is ideal for anyone interested in illustrating and preserving their life story through photos—someone who values accessibility and is willing to invest a bit of creative effort to make their memories easily searchable and richly organized.
Why Choose NPDB?
NPDB is a platform with a clear and dedicated focus on preserving the memories of your lifetime and the history of your family. Its distinctive emphasis on the historical and narrative value of personal photo collections sets it apart from the many generic photo database solutions available today.
Unlike feature-heavy systems, NPDB is intentionally lightweight and straightforward, incorporating only the components essential to its purpose. Furthermore, it enables the rapid extraction of personal stories from the image database—accessible online with minimal delay.
Main Advantages
-
Supports Images of Any Age NPDB works with both newly taken photos and old images digitized through scanning, making it ideal for preserving and managing memories across generations.
-
Fully Customizable User-Defined Tagging System Unlike most platforms that limit tagging to time, location, and people, NPDB allows users to define an unlimited and fully flexible set of tags. These can include events, surnames, scenery types, natural or cultural objects, and more. Users can create and manage their own tagging system using built-in NPDB tools, tailoring the database to their personal needs.
-
Text-Based Search In addition to tags, users can add descriptions or comments to an image’s metadata, allowing for combined free-text and tag-based searches.
-
Fast Search Performance Thanks to the use of an embedded SQL database, search queries are processed quickly, delivering results almost instantly.
Main Limitations
-
No AI Features NPDB is a legacy-style platform and does not include artificial intelligence features such as facial recognition. However, many personal memories and connections cannot be fully captured by AI alone.
-
Time-Consuming Tagging Process Adding images and assigning detailed tags can be time-intensive—typically 3 to 5 minutes per image. That said, NPDB offers an optional streamlined tagging mode that can reduce this to under a minute, albeit with a slight loss in accuracy.
What NPDB Is Not
NPDB is not an image editing platform. Users are free to edit photos using their preferred software before adding them to NPDB. The platform’s core purpose is to provide a highly customizable and efficient system for organizing and searching personal photo archives.
NPDB components
- 2-level directories tree for storing image files "participating" in the system.
- SQL database that enables quick and rich-content searches of images.
- GUI and command line based programs for the tagging/describing of images and their registration in the database.
- GUI and command line based programs for searching and visualizing the images.
- Bash shell script (run_np.sh) performs the role of launcher (or aggregator). It invokes all basic operations of the NPDB system.
- Stories and Collections tool provides the ability to store the results of the personal searches for later access. The user may create the "collection" of stories of individuals, events, trips, meetings, etc. All may be viewed any time later without the necessity to define and run new queries.
- Utilities that provide various maintenance tools.
Reference implementation
The distribution contains a so-called "reference implementation". The tarball distro contains 3 directories:
- src - all necessary source files.
- libs - contains the image metadata library libexiv2.a - to be linked with c++ code of NPDB. Is being built from https://exiv2.org.
- PhotoRoot - a tree of jpeg files prepared for the demonstration/testing purposes.
Note: The libexiv2.a
library may be incompatible with your Linux platform. If so, it is recommended that you build it from source yourself.
Important: The goal of the reference implementation is to demonstrate how the NPDB platform is structured and to provide a way to test its core features. After exploring the reference version, users are encouraged to create their own customized tag types, vocabularies, image file organization, and more. The platform supports nearly unlimited customization of data. Detailed instructions for this process can be found in the document "CustomAndUpdate.md".
Other software prerequisites
- Curl command line tool for transferring data with URLs: https://curl.se
- At least one Linux image viewer (for jpeg files). I use "eom", "eog" and "gthumb"
- SQLite graphical browser (like https://sqlitebrowser.org)
- If you'd like to use the GUI utility for querying photo images DB, then you'll need the Python tools that include:
- Python environment (actually python3), usually comes preinstalled in OS;
- tkinter (tk) tool of Python (https://wiki.python.org/moin/TkInter)
- FreeSimpleGUI package (https://github.com/spyoungtech/FreeSimpleGUI)
Installation
Preliminary steps
- Untar the tarball in a chosen place. Let's denote the root of the result as $root. It contains 3 directories: src, libs and PhotoRoot. Default root is: /home/npdb/npdb_p
- Edit (if necessary) one line in file src/csv_ref/SysMisc.txt:
1,DATAROOT,$root/PhotoRoot,0
where $root should be explicitly inserted (e.g. /home/npdb/npdb_p/PhotoRoot). Edit other lines of SysMisc.txt (only if you need). - If you still need to install system components (Curl, FreeSimpleGUI and others) - you may try to run script comp_install.sh:
cd $root; . comp_install.sh
Main step
Run bash script that performs the system build:
cd $root; . build.sh
Alternatively if you have an older Linux distro (like Ubuntu 18.04 or earlier) the command is:
cd $root; export UB=1; . build.sh
This option is however available only in releases of NPDB prior to 1.4.0!
Post build steps
- Define environment variables:
- export DBPATH=$root/db
- export EXEDIR=$root/bin
- Don't forget to install (if yet not installed) previously mentioned "curl" and python tools.
- On this stage you may "play" with the reference database ($root/db/np.db) and image files tree ($root/PhotoRoot) using NPDB "launcher" script: $EXEDIR/run_np.sh.
- Start to populate image files tree ($root/PhotoRoot) with your directories and jpeg files. Now you may use NPDB system according to the documentation provided in the directory: $root/src/docs
Reference implementation directories locations
- NPDB working root directory - $root (e.g. /home/npdb/npdb_p)
- bin - $root/bin ($EXEDIR) - all executable files (including bash shell and python scripts)
- libs - $root/libs - all static libraries
- db - $root/db ($DBPATH) - SQLite database file and related scripts and data
- all source files - $root/src
- C++ related subsystem - $root/src/cpp
- Vocabularies (for reference) - $root/src/csv_ref
- Documentation - $root/src/docs
- Scripts - $root/src/scripts
- Bash shell - $root/src/scripts/bash
- Python - $root/src/scripts/py
- SQL - $root/src/scripts/sql
- Image files repository (for reference): $root/PhotoRoot (DATAROOT)
Remote access
The possibility to remotely access the querying (searching) abilities of NPDB was successfully tested using the software of Parsec (www.parsec.app). You need to install the "parsec" host on your "server" with the NPDB system. The hosting computer is required to run Windows 10 or 11. The remote client connects to the host also via the installed "parsec" application. The user on the client's side will be able to remotely (including over internet) access NPDB's searching utilities.
NPDB Users' Roles
We may distinguish between 3 major users' roles in NPDB.
Administrator
- is a person that actually creates and maintains the platform. This person:
- develops the vocabularies (content),
- creates the 2-level directories tree (for the photo images),
- creates and populates the database with all vocabularies and other stuff,
- applies various helper routines for the maintenance and sanity checks,
- performs backups of the system
Active user
- is a person that actually defines the contents of the system:
- populates 2-level tree with the pictures,
- defines (performs tagging and registration) all chosen pictures in the database,
- periodically validates the query utilities (making sure of the results' correctness).
Passive user
- is the end-user of the system.
She/he performs the requests to the database using query utilities and enjoying the results.
Why Is NPDB a platform?
NPDB is designed as an extensible platform, offering a foundation upon which further developments can be built. Its open architecture, combined with a set of versatile utilities, provides developers with convenient building blocks for advanced customization and enhancement.
This flexibility makes it possible to develop more sophisticated front-end interfaces, integrate cloud-based solutions, and tailor the system to specific use cases—all while leveraging the core functionality of NPDB.