PhotoEngine

A complete, full featured, cloud enabled photo sharing script written in ASP.NET Core Framework, that can help you build beautiful, socially connected, user friendly photos, albums sharing portal for your existing or as a standalone application.

Overview

It is a complete cloud-enable photo sharing script with all basic and advance features that can help you build highly scalable, secure, photo sharing solution for existing or stand-alone application.

It can be used in any type of application (e.g flikr, photo sharing and hosting sites, product or any specific services media collections etc)

It have built-in support for AWS Cloud for storing and streaming unlimited photos securely

Currently built with ASP.NET Core 3.1 + Angular 9.0.5 + Bootstrap 4.4.1

Features Overview

List of main features of PhotoEngine.
Membership

Membership

Extended ASP.NET Identity Module that can allow users to create account, login, manage account, update profile, change password, email etc

Photos & Albums

Photos & Albums

It allows users or site administrator to upload and manage unlimited photos, create unlimited albums, with additional options including wallpapers, editor review, ratings, comments, resize / download and more.

Cloud Enabled

Cloud Enabled

Having built-in support for AWS Cloud for storing and streaming photos

MY ACCOUNT

MY ACCOUNT

Advance my-account application (Angular based) that can allow users to manage own albums, photos, profile, settings and configurations.

SOCIAL PROFILES

SOCIAL PROFILES

Allow users to visit each other public profiles and browse user public media files, photos, albums etc

CONTROL PANEL

CONTROL PANEL

Advance control panel (single page latest angular based) that can help site administrator to manage website settings, configurations, contents, users, reports etc.

Configurations

Configurations

Support advance configuration section that can allow you configure almost every available features on the fly without making changes in code.

Installation

Installation

Single step easy installation module that can help you easily configure database, default admin user, initialize application with default settings to make your application ready to use.

MULTIPLE LANGUAGES

MULTIPLE LANGUAGES

Support managing multiple ui cultures, configure your default language and allow multiple language options for user to choose from.

Categories

Categories

It support advance category managing module that can allow you to manage unlimited categories with unlimited hierarchy and separate it for each type of contents.

Labels

Labels

It support labeling or tagging articles, blogs with one or more labels or tags. Also have advance tag cloud management tool to manage labels, group labels by priority etc

Advertisement

Advertisement

It support managing advertisement (e.g Adsense Script) from control panel for different types of blocks that display / render ads on different sections and pages.

Advance Search

Advance Search

Angular based real time search module that can allow users to search posted contents, blogs, articles and more.

Sitemaps

Sitemaps

It support dynamically generated sitemaps from videos, playlists, pages, categories, tags etc, that can be easily submitted to search engines to index your data fastly.

Mail Templates

Mail Templates

It support advance mail template tool that can help you manage and customize mail templates from control panel.

Reports

Reports

It include advance reporting module that can help site administrator to view different type of reports e.g display upload photos / albums trends monthly bases for current year.

Abuse Report

Abuse Report

It include abuse / spam reporting functionality and management module in control panel that can help administrator to review and take action on reports sent from website.

Comments

Comments

It support multiple options for posting comments on photos including custom comment app, disqus app, facebook comment app or can disable comment if not needed or replace it with your own.

Error Log

Error Log

It include advance error logging module, that can log almost every type of error occurs while user browsing the site and report to site administrator for review.

Dictionary

Dictionary

It include dictionary module that can allow administrator to manage restricted usernames and black listed word that later used by screening script to prevent website from contents what may violate its terms of use.

Dynamic Attributes

Dynamic Attributes

It include advance dynamic profile attribute management tool that can help site administrator to adjust user profile attributes from control panel without making changes in code.

Block Ip

Block Ip

It include optional module that can allow site administrator to manage, block ip-address to access and use website.

Archive

Archive

It support optional feature that can allow website to generate archive list to group or archive uploaded public photos based on month, year.

Root Pages

Root Pages

Advance single routing and friendly url logic designed to make almost every page url act as root url without using separate controllers / actions.

Code Example

A very clean and professional coding architecture has been adopted that we developed in years of effort to make customization process very easy and even a inexperience programmer can easy work and customize solution according to their needs. Here are some examples of usage

Integrate Category Listing

@await Html.PartialAsync("~/Views/blogs/partials/_CategoryList.cshtml", new CategoryListViewModel_v2()
{
        QueryOptions = new CategoryEntity()
        {
              type = (int)CategoryBLL.Types.Photos,
              ispublic = true,
              iscache = true,
              pagesize = 6,
              order = "priority desc",
        },
        ListObject = new ListItems()
        {
              ListType = ListType.Grid,
              ColWidth = "col-md-6",
         },
         shortList = true,
         Path = "photos/", // category url path
         NoRecordFoundText = "No Photos Found!"
})

Integrate Photo Listing

@await Html.PartialAsync("~/views/photos/partials/_List_SM_01.cshtml", new Jugnoon.Photos.Models.PhotosListViewModel()
{
        BrowseText = "Browse All",
        BrowseUrl = "/photos",
        HeadingTitle = "Recent Photos",
        NoRecordFoundText = "No Photos Found!",
        ListObject = new Jugnoon.Scripts.ListItems()
        {
             showUser = true,
             showDate = true,
             ListType = ListType.List
         },
         QueryOptions = new Jugnoon.Photos.PhotoEntity()
         {
              order = "photo.created_at desc",
              ispublic = true,
              iscache = true, // toggle cache on | off
              isfeatured = FeaturedTypes.All,
              pagesize = 15
          }
})

Photo Listing with Pagination Model Initialization

 var ListEntity = new PhotoListViewModel()
{
       isListStatus = false,
       QueryOptions = new PhotoEntity()
       {
             pagenumber = (int)pagenumber,
             term = "",
             iscache = true,
             ispublic = true,
             pagesize = 10,
             isfeatured = FeaturedTypes.All,
             datefilter = DateFilter.AllTime,
             order = "photo.created_at desc",
       },
       ListObject = new ListItems()
       {
              ListType = ListType.List, // 0: grid 1: list
       },
       HeadingTitle = "Recently Uploaded Photos",
       DefaultUrl = "/photos",
       PaginationUrl = "/photos/page/[p]/",
       NoRecordFoundText = "No Photos Found!",
};
ListEntity.TotalRecords = await PhotosBLL.Count(_context, ListEntity.QueryOptions);
if (ListEntity.TotalRecords > 0)
     ListEntity.DataList = await PhotosBLL.LoadItems(_context, ListEntity.QueryOptions);

Angular Reactive Form Attributes

// Text Box Control
controls.push(
      new Controls.Textbox({
         key: "firstname",
         label: "First Name",
         placeholder: "Enter first name",
         value: "",
         colsize: "col-md-12",
         required: true,
         helpblock: "",
         order: 0
      })
);

// Dropdown Control
new Controls.Dropdown({
      key: "rating_option",
      label: "Rating Options",
      required: true,
      value: entity.rating_option.toString(),
      options: [
            {
              key: 0,
              value: "Like / Dislike"
            },
            {
              key: 1,
              value: "Five Star"
            },
            {
              key: 2,
              value: "Disabled"
            }
        ],
        helpblock:
           "Setup rating option for contents 0: five star, 1: like / dislike, 2: disable rating",
        order: 19
    })
);

// Rich Text Editor Control
controls.push(
      new Controls.TinyMyceEditor({
      key: "contents",
      label: "Contents",
      value: entity.contents,
      tinymiceOptions: this.coreService.prepareInitAdvacneEditorSettings(),
      required: true,
      order: 6
  })
);

// Image Cropper Control
controls.push(
      new Controls.ImageCropper({
          key: "picturename",
          label: "",
          value: entity.picturename,
          required: false,
          cropperOptions: cropperOptions,
          helpblock: "",
          order: 9
     })
);

Similarly lots of more pre-built reactive form controls with validations with ability to add your own. That can help you build complex applications or features on the fly.

Premium Versions

BlogEngine is available with best premium templates with enhanced look, premium features and support.

Pricing

Free

  • 100% source code
  • Limited support via forum
Free

Basic

  • Setup & Installation
  • 4x7 Priority Support
  • Lifetime Free Upgrade
$149One Time

Advance

  • Additional Forums Module
  • Additional Artist Module
  • Additional Blogs, Article Module
  • 4x7 Priority Support
  • Lifetime Free Upgrade
$299One Time

Frequently Asked Questions

What is Licensing Terms?

Core PhotoEngine script is released under MIT License and freely to use, extend & customize.

What type of support available for this product?

We provide knowledge base functionality that can be utilized by user, if there is any query or report any issue. We will response within hour to maximum of 24 hour. There is no email, phone, etc suport available.