Coder Social home page Coder Social logo

rinminase / anidb Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 1.0 14.26 MB

๐Ÿ“๐Ÿš€ Rin Minase's Anime Database using Angular deployed to Netlify using Circle CI

Home Page: https://anidb.netlify.app

License: MIT License

HTML 40.19% TypeScript 48.65% Shell 0.05% SCSS 11.11%
firebase scss circleci progressive-web-app netlify anidb angular angular12 bootstrap5 typescript

anidb's Introduction

Rin Minase's Anime Database

Circle-CI Netlify-Status

David-DM David-DM

Angular Node

Introduction

Add info here

Getting Started

Running the project

Installations Required:

  1. Clone the project and copy the ENV template file to a new ENV file.

    git clone https://github.com/RinMinase/anidb.git
    cd anidb
    cp .env.example .env
    
  2. Modify the created ENV file based on your Firebase configuration

  3. Install the dependencies then run the project

    yarn install
    yarn start
    
  4. Fire up your browser and go to localhost:3000

Building the project

Installations Required:

  1. Fire up your terminal inside the project folder.

  2. Build the project by running:

    yarn build
    
  3. This should generate a dist/ folder inside the project folder.

Code Scaffolding

This is using yarn ng generate <schematic> <name> command. This can be shortened to yarn ng g <schematic> <name>.

Schematics

Project Structure

.
โ”œโ”€โ”€ .circleci/                          # Circle CI configuration folder
โ”œโ”€โ”€ assets/                             # Project assets
โ”‚   โ”œโ”€โ”€ config/                         # Project configurations
โ”‚   โ”‚   โ”œโ”€โ”€ manifest.json               # Web manifest file
โ”‚   โ”‚   โ”œโ”€โ”€ ngsw-config.json            # PWA Service Worker configuration file
โ”‚   โ”‚   โ”œโ”€โ”€ webpack.ts                  # Extended webpack configuration file
โ”‚   โ”‚   โ””โ”€โ”€ ...                         # Other configuration files
โ”‚   โ”œโ”€โ”€ res/                            # Platform-specific resources folder
โ”‚   โ””โ”€โ”€ ...                             # Other assets
โ”œโ”€โ”€ dist/                               # Compiled production code
โ”œโ”€โ”€ src/                                # Project source code
โ”‚   โ”œโ”€โ”€<module-name>/                   # Project module
โ”‚   โ”‚   โ”œโ”€โ”€ <name>.component.html       # Component template
โ”‚   โ”‚   โ”œโ”€โ”€ <name>.component.scss       # Component stylesheet
โ”‚   โ”‚   โ”œโ”€โ”€ <name>.component.ts         # Module component
โ”‚   โ”‚   โ””โ”€โ”€ <name>.module.ts            # Module
โ”‚   โ”œโ”€โ”€ core/                           # Project-wide reusable classes
โ”‚   โ”‚   โ”œโ”€โ”€ builders/                   # Project builders
โ”‚   โ”‚   โ”œโ”€โ”€ components/                 # Project components
โ”‚   โ”‚   โ””โ”€โ”€ services/                   # Project services
โ”‚   โ”œโ”€โ”€ app.module.ts                   # Main module and project routes
โ”‚   โ”œโ”€โ”€ index.html                      # Main HTML file
โ”‚   โ”œโ”€โ”€ index.scss                      # Main Stylesheet (SCSS) file
โ”‚   โ””โ”€โ”€ index.ts                        # Main TypeScript file
โ”œโ”€โ”€ .editorconfig                       # IDE / Editor configuration
โ”œโ”€โ”€ .env                                # Environment file
โ”œโ”€โ”€ angular.json                        # Angular CLI configuration
โ”œโ”€โ”€ tsconfig.json                       # Main TypeScript configuration file
โ””โ”€โ”€ ...                                 # Other project files

Project tasks

Task automation is based on Yarn scripts or NPM scripts.

Task Description
yarn start Run development server on http://localhost:3000/ with file watching on changes
yarn start --prod Run production server on http://localhost:3000/ with file watching on changes
yarn build Build production code and add service worker to built code

Other tasks included in package.json that should not be executed manually:

Task Description
yarn deploy Build production code without displaying progress and add service worker to built code

Testing the project

Add info here

Built with

Deployed to

anidb's People

Contributors

rinminase avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

quangv

anidb's Issues

Use $digest instead of $apply for performance

scope.$digest() will fire watchers on the current scope, and on all of its children, too. scope.$apply will evaluate passed function and run $rootScope.$digest().
โ€” Google

The second one is slower, as it needs to evaluate watchers for $rootScope and all it's child scopes
โ€” Google

Add per date basis in the chart in about page

Selectors would somewhat be like this:

Episodes Titles
Week Month Year

Possible selections of chart are:

  • Episodes per Week
  • Episodes per Month
  • Episodes per Year
  • Titles per Week
  • Titles per Month
  • Titles per Year

Swipe navbar from left on mobile browser

Use angular-hammer

Todo:

  • Option for the menu to slide in from the left and/or right side of the screen
  • Touch/swipe support to open and close with left/right swipe
  • Ability to click anywhere in the 'content' area to close the menu

Sample Codes:

References:

Possible Problems:

Use angular-datepicker for optional date picking

Notes:

  • The input field could be appended with a calendar picker button which pops out a date picker but can still fill the fields with date-like strings "jan 1" or "1/1/18"

Angular Moment Picker Setup:

var myApp = angular.module('myApp', ['moment-picker']);
<div moment-picker="ctrl.myInput"
     format="MMM DD, YYYY"
     max-view="month"
     start-view="month"
     min-date="'Jan 01, 1995'"
     keyboard="true">
    {{ ctrl.myInput }}
</div>

Created by Angular-Moment-Picker Builder

Or use the provider:

angular
    .module('myApp', ['moment-picker'])
    .config(['momentPickerProvider', function (momentPickerProvider) {
        momentPickerProvider.options({
            locale:        'en',
            format:        'MMM DD, YYYY',
            minView:       'decade',
            maxView:       'month',
            startView:     'month',
            autoclose:     true,
            today:         false,
            keyboard:      true,
            
            /* Extra: Views properties */
            leftArrow:     '&larr;',
            rightArrow:    '&rarr;',
            yearsFormat:   'YYYY',
            monthsFormat:  'MMM',
            daysFormat:    'DD',
            hoursFormat:   'HH:[00]',
            minutesFormat: moment.localeData().longDateFormat('LT').replace(/[aA]/, ''),
            secondsFormat: 'ss',
            minutesStep:   5,
            secondsStep:   1
        });
    }]);

References:

Other References:

Create testing scenarios for login module

Testing Scenarios:

  • spinner test
    • test with wrong credentials
      • spinner must be shown
      • after a while, username and password inputs must be shown
  • wrong credentials login
    • test with wrong credentials
      • span message box must be shown
  • correct credentials login
    • login
      • whenever #anime-table is shown

Changelog not displayed

  • Problem exists in Safari 11.1 in MacOS Sierra (10.2)
    [Optional since not a supported platform]

Year date parsing on adding

If current date is July 08, 2018:
| Input | Output |

| 12/1 | 12/1/2017 |
| 7/9 | 7/9/2017 |
| 7/8 | 7/9/2018 |
| 7/7 | 7/7/2018 |

Notes:

  • Make today the cutoff date
  • If date is before current date, make year this year
  • if date is after current date, make year last year

Upload image to data

Viewable in:
Landing > View

Notes

  • Use dropzone for image drag and drop
  • Preferrably in image divider, but it can be a popup if necessary
  • If the image divider is used:
    • Upon dropping images, add a button below the image for saving
    • Use sweetalert to confirm image upload

Add Readme.md file

Layout:

  • Badges
    • Travis-CI
    • DavidDM david-dm
    • Node Badge (Shields.io) node
    • NPM / Yarn Badge (Shields.io) yarn
  • Icon / Brand Logo
  • Small Description
    • Description written here
  • Getting Started
    • Creating / Cloning the project
    • Building the project
    • Bundling the project for Android
    • Testing the project
  • Built with
    • Framework
      • AngularJS 1.7
    • Framework Syntax
      • Babel ES8 / ES2017 Preset
    • Stylesheet / CSS Preprocessor
      • Sassy CSS (SCSS)
    • HTML Framework
      • Bootstrap 4
    • Database
      • Firebase
    • Project Bundler
      • Webpack 4
    • APK / Android Bundler
      • Cordova
    • Testing Framework
      • NightwatchJS
    • Deployment Tool
      • Travis-CI

Create testing scenarios for home module

Testing Scenarios:

  • navbar must be shown
    • check for navbar
  • footer must be shown
    • check for footer
  • add modal
    • click on add button
      • must open modal
        • must have "Add Title" on title
        • must have close button on top
        • must have save button below
        • must have another close button below
        • must have fields for:
          • status
            • check if it contains the necessary options
          • quality
            • check if it contains the necessary options
          • title
            • check if it is type of text
          • episodes
            • check if it is type of number
          • ovas
            • check if it is type of number
          • specials
            • check if it is type of number
          • datefinished
            • check if it is type of text
          • filesize
            • check if it is type of text
          • season number
            • check if it is type of number
          • first season title
            • check if it is type of text
          • release season & title (must be two)
            • check if it is has two parts
            • check if it contains the necessary options
          • hdd checkbox
            • check if it is type of checkbox
          • duration
            • check if it is type of text
          • encoder
            • check if it is type of text
          • remarks
            • check if it is type of text
          • variants
            • check if it is type of text
          • prequel
            • check if it is type of text
          • sequel
            • check if it is type of text
          • offquel (read-only field)
            • check if it is type of text and is readonly
          • offquel + add button
            • check if it is type of text
            • check if it has a button beside it
  • search field
    • search any very specific query (which would return only one value)
      • must return one value on table
  • view
    • search for specific
      • url should point to specific url

Setup proper development branching

Todo:

  • Setup dev branch for non-deployment of Travis
  • On push of master branch
    • Run test scripts
    • Build master branch -- deploying to firebase

Add slide out animations on Home

Slide Out (Left)

  • (Manage)
  • Click a link (title) on the table
  • Slide out left
  • (View)

Recommendations:

  • Trigger an ng-change to a certain variable to trigger "animate slideOutLeft"

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.