This is a Ruby on Rails web application designed for managing personal collections such as books, post-stamps, coins, etc. The application provides features for authenticated users to create, view, and manage their collections and items. Non-authenticated users have read-only access, allowing them to search and view collections and items.
- Users can register and authenticate via site forms.
- Non-authenticated users have read-only access.
- Authenticated users can access all features except admin functionalities.
- Admin users can manage users (view, block, unblock, delete), including granting or revoking admin access.
- Users can create, edit, and delete collections.
- Each collection contains name, description, topic/category, optional image, and customizable fields for items.
- Users can add, edit, and delete items within their collections.
- Items have fixed fields (id, name, tags) and customizable fields selected by the user.
- The application supports full-text search across items.
- Search results display links to items containing the searched text.
- Users can leave comments on items.
- Comments are linear and displayed chronologically.
- Users can like and dislike items.
- Displays the list of latest items, top 5 largest collections, and a tag cloud.
- Clicking on a tag in the tag cloud displays the list of items associated with that tag.
- Users can select their preferred language (English and one other) and theme (light or dark).
- User preferences are saved for future visits.
The database schema includes the following tables:
- users: Stores user information including email, password, username, role, preferences, and blocked status.
- collections: Stores information about collections including name, description, topic/category, image URL, and user ID.
- items: Stores information about items including name, tags, additional customizable fields, and collection ID.
- comments: Stores comments made by users on items, along with item and user IDs.
- likes: Stores likes made by users on items, along with item and user IDs.
- dislikes: Stores dislikes made by users on items, along with item and user IDs.
- Ruby on Rails framework
- Database management system (e.g., PostgreSQL, MySQL)
- Devise for authentication
- Bootstrap or similar CSS framework for styling
- Elasticsearch or native database features for full-text search
- Internationalization (I18n) for supporting multiple languages
- GitHub for version control
- Authentication via social networks
- Custom fields with predefined options
- Export collections to CSV file