Code Monkey home page Code Monkey logo

project-icecream's Introduction

Starware


Logo

Frameboi

Profile Picture Frame Generator for HackNITR 4.0

View Live ยท Report Bugs . Add Features

Table of Contents
  1. About The Project
  2. Built With
  3. HackNITR
  4. Getting Started
  5. License
  6. DSC NIT Rourkela
  7. Starware

About The Project

A digital and customisable frame generator for all the participants of the hackathon

  • The web application allows you to customise your frames with wide-range of shapes and colors.
  • On completion of the frame, upload your profile picture.
  • Download the customised frame and share it with others.

Built With

Following technologies and libraries are used for the development of this website

HackNITR

HackNITR, one of the largest hackathons in India's eastern region, is a kind of hackathon that endeavours to bring and integrate talent, innovation, and creativity under one roof to build solutions for real-world problems using the latest technologies. It is organized by a bunch of tech enthusiasts from Developer Student Clubs (DSC) NIT Rourkela in collaboration with OpenCode, Opensource community, registered under the technical society of Student Activity Centre (SAC), NIT Rourkela.

Getting Started

To setup the project locally the steps below.

Prerequisites

  • Node.js

    # Homebrew
    brew install nodejs
    
    # Sudo apt
    sudo apt install nodejs
    
    # Packman
    pacman -S nodejs
    
    # Module Install
    dnf module install nodejs:<stream> # stream is the version
    
    # Windows (chocolaty)
    cinst nodejs.install
    
  • Yarn

  npm install --global yarn
  # Homebrew
  brew install git

  # Sudo apt
  apt-get install git

  # Packman
  pacman -S git

  # Module Install (Fedora)
  dnf install git

Contribution guidelines


Our Slack Community: Slack Invite

Contributions are welcome ๐ŸŽ‰๐ŸŽ‰

Local Repository Setup

Please refer to the project's style and contribution guidelines for submitting patches and additions. In general, we follow the "fork-and-pull" Git workflow.

  1. Fork the repo on GitHub
  2. Clone the project to your local system
  3. Commit changes to your own separate branch
  4. Push your work back up to your fork
  5. Submit a Pull request so that we can review your changes

NOTE 1: Please abide by the Contributing Guidelines.

NOTE 2: Please abide by the Code of Conduct.

Running the project.

The project uses Yarn and not NPM. It is strictly advised to stick with Yarn so as to avoid dependency conflicts down the line.


## Install Dependencies
yarn install

## Run the Project
yarn develop

Following are the commands to remove/add new dependencies using yarn

## Add a new Package
yarn add package_name

## Remove an existing Package
yarn remove package_name

## Save Package as a Dev Dependency
yarn add -D package_name

License

Distributed under the MIT License. See LICENSE for more information.

DSC NIT Rourkela

Project developed and maintained by DSC NIT Rourkela DSC NIT Rourkela Cover Image

Starware

dscnitrourkela/project-icecream is Starware. This means you're free to use the project, as long as you star its GitHub repository. Your appreciation makes us grow and glow up. โญ

project-icecream's People

Contributors

orko06 avatar padmajabhol avatar ratnakar5938 avatar riteshsp2000 avatar sonakshi1901 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

project-icecream's Issues

Input boxes are not properly made

Describe the bug
The input box placeholder is not proper, requiring you to first delete the placeholder and then type into it.

To Reproduce
Go and type something in the input box.

Expected behavior
The input boxes should work properly

Additional context
Extra work on inputs is appreciated.

Create the desktop screen.

Is your feature request related to a problem? Please describe.
Desktop UI is ready. Make sure that the responsiveness is maintained.

Screenshot 2021-10-02 at 1 59 38 PM

Describe the solution you'd like
All the required components i.e.

  1. Frame (Canvas)
  2. Frame carousel
  3. Upload Input
  4. Name and Guild Inputs.

Preferably use CSS Grids. Though, seeing the designs there is no strict requirement for the same and can be done using flexbox as well.

Image aspect ratio bug.

The current behaviour is that, whenever an image is uploaded, its aspect ratio is changed to 1:1 which is not the desired behaviour.

What we want:

  • The image should adjust according to its aspect ratio i.e. If the image is landscape, its width should be extended fully as per the frame and vice versa.
  • The image should be able to be zoomed in. A simpler way is using the transformable component, but the preferred way would be to be able to zoom in as per normal (using gestures/scroll)

Update Carousel look

Is your feature request related to a problem? Please describe.
Update the carousel display style. Check the following images

Screenshot 2021-10-02 at 2 05 12 PM Screenshot 2021-10-02 at 2 05 30 PM

Describe the solution you'd like
The one on the left is what we have for the mobile view currently. The one on the right is what we want.
Try to implement this without using any external packages.

Additional context
Comment below to get access for the figma designs.

Shift to HTML 5 Canvas

Issue
The current implementation of this project is using basic HTML elements for rendering and a package named JIMP for image manipulation. While it is easy to have a setup like this, it is not very robust and has tons of bugs.

Solution

  • A better implementation of this would be using HTML 5 Canvas. Canvas is really powerful and best suited for such projects. It has built-in APIs for image manipulation as well as saving the Canvas as png which is handy for us.
  • There can be 2 possible ways to implement this. The first being that we use vanilla javascript to implement canvas along with some supporting libraries such as konva, p5.js, etc.
  • The other solution, which might be more feasible in this context would be using a canvas library that has a react version of their library. React Konva is one such library.

Additional context
The project is written in typescript, you might want to checkout typescript and using it with react beforehand

Setup ESLint, Prettier

Is your feature request related to a problem? Please describe.
The current repository lacks any sort of linting and formatting. In order to maintain a consistent coding style throughout the repository, it is necessary to set up ESLint and Prettier.

Describe the solution you'd like

  • A common coding standard that the community follows for React projects is the one set up by Airbnb. Extending our config to use those styles would be a great idea.
  • Additional configuration might be required as the project uses Typescript and not Javascript. ESLint was designed to work with Javascript.

Additional context
You can checkout this repository for a similar setup: Project Guava Web

Text Box updates

Is your feature request related to a problem? Please describe.
As of now, the text shown is sort of static. As in there is no way to change the font family, no way to update background colour, no option to change the shape of the text background shape.

Describe the solution you'd like

  • Add a colour picker to chose and update the background of the text. (Possible additions for options to chose a gradient - just like Figma, linear, radial, etc)
  • A drop down to choose a selected few font families for the text. No need for separate ones for name and guild, a common would do the job.
  • The design team could come up with a few shapes as background. So a carousel of shapes to choose from for the text box would be great.

Transformable text.

Is your feature request related to a problem? Please describe.
The current text is not transformable and has no background which makes it difficult to read on images with the same colour background.

Describe the solution you'd like

  • Create a transformable text component that handles the transformation of text (increase, decrease the size, rotation)
  • Options to change the background colour of the text. As of now create a state in the parent component which stores the background colour and use that to update the colour. (A custom colour picker is to be created in the text box input component - to be done later )
  • Make sure there is a distinction between the name and guild name. (change of text size and font would do the job. Make the Name bolder and guild name regular)

Layers bug

As of now, the frame and the text boxes can be overlayed by the image.
The desired behaviour is that the Frame should always be ahead no matter what.

type checking

Frame Problem
i have seen when i change frame only some page has frame not all

Type checking
i can implement react type checking for easy to debug

Can you update your project once, it's not working!

Hello
The project is very useful to me. Very much appreciated for such an amazing project. I'm trying to clone this project locally. But it's not working for such issues.

Hopefully you guyes will update it with up-to-date packages & help us to use it.

Thanks!

Make the site responsive.

Is your feature request related to a problem? Please describe.
The site is working properly on the desktop however breaks on a smaller screen.
image

Describe the solution you'd like

  • Improve the responsiveness of the site.
  • Design can be discussed if required.
  • Try to work with the given components while using flex-box or grid for mobile screen.

Frameboi 2.0 updates

  • Fix logos, images
  • Fix text
  • Upload new frames
  • Deployment Check on hacknitr.tech
  • Do PR for the frames

Make a carousel for mobile view

Is your feature request related to a problem? Please describe.
Update the carousel display style. Check the following images

Screenshot 2021-10-02 at 2 05 12 PM Screenshot 2021-10-02 at 2 05 30 PM

Describe the solution you'd like

  • The one on the left is what we have for the mobile view currently. The one on the right is what we want.
  • Try to implement this without using any external packages.
  • Try to add some buttons below for easier access also so that you don't have to swipe every time (up to you).

Additional context

  • It should work on swipe events also.
  • Comment below to get access for the figma designs.

Resources

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.