What is SculeJS?
SculeJS provides a high-performance NoSQL database with the following features:
- Document-oriented storage
- Support for sparse B+tree and Hash indexes
- Fast in-place updates
- Rich document based queries
- Support for Map/Reduce operations
- Support for geo-locational queries using the $where and $near operators
Data structures currently included in SculeJS are:
- Hash Map
- Hash Table
- Binary Search Tree
- B+ Tree
- Linked List
- Doubly Linked List
- Caching Linked List
- LRU Cache
- LIFO Stack
- FIFO Stack
Where's the documentation?
I do my best to keep the JSDoc annotation in the source up to date with changes, sometimes I miss things though. To generate a HTML version of the API reference for SculeJS clone a copy of the jsdoc3 repository and follow the instructions in the README.md file there.
You should be able to generate JSDoc for SculeJS using the following commands (assuming the sculejs and jsdoc directories are at the same level):
$ cd jsdoc $ ./jsdoc ../sculejs/lib/*.js
If you have any specific questions about how to use SculeJS then head on over to the project wiki.
Do you use any coding standards?
I run all core library code through JSHint as part of my (currently manual) build process. Building code for other platforms such as web and Titanium takes a little bit of manual fiddling, so certain portions don't pass. It all runs though, and all test cases are verified by running expresso before any commits to TRUNK.
How does it work?
Collections can be persisted to disk (using LocalStorage in the browser), or other storage mediums using custom storage managers. At the time of writing I'm working on support for IndexDB and WebSQL storage engines.
Can I contribute/donate/help in some way?
If you want to help out with developing SculeJS please take a look at the contributor wiki guide, I'd be happy to have some help. Donations aren't necessary - if you use SculeJS and love it then tell your friends, just getting the word out would be a huge help.
I have a full time job and maintain SculeJS in my spare time, so if I don't get to your tickets immediately please don't take it personally.