Coder Social home page Coder Social logo

diptochakrabarty / resume-generator Goto Github PK

View Code? Open in Web Editor NEW
35.0 3.0 25.0 7.1 MB

A Resume builder which allows users to build their own custom resumes with details like experience,projects , skills ,education etc. Users can also have the feature to download their resumes . To contribute send PR at development branch from where it will be merged in master once checked.

Home Page: https://generator-resume.herokuapp.com/

License: MIT License

Python 30.07% CSS 11.61% HTML 58.31%
flask flask-application flask-sqlalchemy flask-restful flask-web flask-backend python3 python-script bcrypt wtforms

resume-generator's Introduction

Table of Contents

Project at View

  • Update your Details

  • Delete Details

and much more

About The Project

  • Build your Resume with this application , register and login to create your own resume easily.
  • Run the program and go to localhost:5000
  • Add user details and entries
  • Users can add fields
  • Users can also update or delete entries

Built With

This section should list any major frameworks that you built your project using. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.

  • Flask
  • sqlalchemy
  • Python

Installation

  1. Clone the repo
git clone https://github.com/DiptoChakrabarty/Resume-Generator
  1. Enter Directory
cd Resume-Generator
  1. Install all packages
pip install -r requirements.txt
  1. Remove site.db file to start fresh database
rm resume/site.db
  1. Setup Env Variables

create file .env inside folder resume

Add the following

MAIL_USERNAME="{{ your gmail username }}"
PASSWORD="{{ your password }}"
  1. Run webserver
python3 app.py

Contributing

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.

Pull Request Process

  1. Ensure any install or build dependencies are removed before the end of the layer when doing a build.
  2. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters.
  3. Only send your pull requests to the development branch where once we reach a stable point it will be merged with the master branch
  4. Associate each Pull Request with the required issue number

Branch Policy

  • development: If you are making a contribution make sure to send your Pull Request to this branch . All developments goes in this branch.
  • master: After significant features/bug-fixes are accumulated in development branch we merge it with the master branch.

Contribution Practices

  • Write clear and meaningful commit messages.
  • If you report a bug please provide steps to reproduce the bug.
  • In case of changing the backend routes please submit an updated routes documentation for the same.
  • If there is an UI related change it would be great if you could attach a screenshot with the resultant changes so it is easier to review for the maintainers

License

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

Contact

Acknowledgements

resume-generator's People

Contributors

bikram-saha avatar diptochakrabarty avatar importhuman avatar kilianplapp avatar prasunbhunia avatar princekushwaha avatar sharma-hrishabh avatar shubhampalriwala avatar vinayakguptaa avatar yashr921 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

resume-generator's Issues

feature to add custom field in the resumes

Right now we have five fields which users can enter to generate resume user details , experience , projects , achievements and skills , we should be able to add custom fields like certificates etc.
Design a route to handle custom fields requested by users and generate required frontend pages and add to resume template.

Handle Errors

Based on the errors in the application display appropriate messages to handle the errors
Examples Incorrect password,field empty etc

Modify Form Names

Currently the applications forms are defined in resume/forms.py

It would be good if the form names are redefined to start with capital letters and ending with Form (eg UserExpForm)

The forms present are

  • RegistartionForm (Done)
  • LoginForm (Done)
  • PostingForm (Done)
  • UsereducationForm
  • UserexperienceForm
  • UserProjectsForm
  • ResumeBuilderForm
  • UserSkillsForm
  • UserAchievementForm
  • RequestResetForm
  • ResetPasswordForm

The forms can be modified to the above names and the areas where the forms are used in the routes also have to modified.

Please send PR for any one of the above mentioned forms , do not send PR for multiple forms at a time.

Add Methods to ease database additions , query etc

Currently for the different operations we are querying , adding to database and deleting to database directly in the implementation of the routes .

The aim is to add a couple of database methods to add , delete or query the database for the different models.

The different models present are

  • userdetails
  • education
  • experience
  • projects
  • skills
  • achievements

Send your PR with modifications for any one model and also replace with these methods in the routes , do not send for multiple models at a time.

Check Usermodel which has these methods implemented

class UserModel(db.Model,UserMixin):
__tablename__= "user"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20),unique=True,nullable=False)
email = db.Column(db.String(120),unique=True,nullable=False)
image_file = db.Column(db.String(20),nullable=False,default='default.jpg')
password = db.Column(db.String(60),nullable=False)
#education
education = db.relationship('education',backref='edu',lazy=True)
#experience
experience = db.relationship('experience',backref='exp',lazy=True)
#projects
projects = db.relationship('projects',backref='pro',lazy=True)
#userdetails
userdetails = db.relationship('userdetails',backref='details',lazy=True)
#skills
skills = db.relationship('skills',backref='skill',lazy=True)
#achievements
achievements = db.relationship('achievements',backref='ach',lazy=True)
def __retr__(self):
return "User {} Email {} Image {}".format(self.username,self.email,self.image_file)
def add_to_database(self):
db.session.add(self)
db.session.commit()
def delete_from_database(self):
db.session.delete(self)
db.session.commit()
@classmethod
def find_by_username(cls,username):
return cls.query.filter_by(username=username).first()
@classmethod
def find_by_email(cls,email):
return cls.query.filter_by(email=email).first()
def reset_token(self,expires_sec=1800):
s = serializer(app.config['SECRET_KEY'],expires_sec)
return s.dumps({"user_id": self.id}).decode("utf-8")
@staticmethod
def verify_token(token):
s = serializer(app.config['SECRET_KEY'])
try:
user_id = s.loads(token)['user_id']
except:
return None
return UserModel.query.get(user_id)

return status codes

Some of the routes are not handling status codes efficiently , return relevant status codes for the routes

Documentation errors (installation)

I noticed some discrepancies in the installation part of the README.md file:

  • git clone https://github.com/DiptoChakrabarty/website Although it says "website", the link still works, but "Resume-Generator" might be better in the end.
  • There is no directory named website in the repository. This seems to be a renaming issue, as with point 1.
  • Point 4 has a typo, it should be rm resume/site.db.
  • In point 5, the following can be excluded from the coding block:
    create file .env inside folder resume
    Add the following

ERROR: Command errored out with exit status 1: python setup.py egg_info

I'm trying to run step 3 of the installation steps so I can work on some updates to the styling. However I keep running in to this error when running pip install -r requirements.txt.

Python Version: 3.8.6
Pip Version: 20.2.3

     command: 'c:\users\chriss\appdata\local\programs\python\python38-32\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ChrisS\\AppData\\Local\\Temp\\pip-install-upoqhte7\\uwsgi\\setup.py'"'"'; __file__='"'"'C:\\Users\\ChrisS\\AppData\\Local\\Temp\\pip-install-upoqhte7\\uwsgi\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\ChrisS\AppData\Local\Temp\pip-pip-egg-info-brr1ei3d'
         cwd: C:\Users\ChrisS\AppData\Local\Temp\pip-install-upoqhte7\uwsgi\
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\ChrisS\AppData\Local\Temp\pip-install-upoqhte7\uwsgi\setup.py", line 3, in <module>
        import uwsgiconfig as uc
      File "C:\Users\ChrisS\AppData\Local\Temp\pip-install-upoqhte7\uwsgi\uwsgiconfig.py", line 8, in <module>
        uwsgi_os = os.uname()[0]
    AttributeError: module 'os' has no attribute 'uname'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.```

I've tried updating setuptools and uninstalled/reinstalled Python, but still no success. I'm thinking this may be a configuration issue on my end, but I'm not familiar enough with Python to know for sure.

Check Validity of Dates

Currently we are able to select the start and end date for the users experience , education etc however there is no validation present in the routes in case the end date is before the start date which needs to be fixed .

Validate the dates provided by user and add checks for multiple validations.

Several bugs in the backend

Description

There are 3 bugs in the backend that I came across while resolving issue #5 :

  1. In experience.html, the delete button redirect is faulty.
  2. wkhtmktopdf is not configured.
  3. PDF download was throwing ProtoocolError due to inability to access image files.

The issues mentioned above have been corrected by me. Raising this issue so that I can send in the PR that resolves these.

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Rename DataBase Models name

Currently the database models defined in resume/models.py are lowercase model names (eg experience , education etc)

It would be good if these model names were modified to something like this EducationModel , ExperienceModel etc.
A tablename should be added to these models and also the corresponding models names in other parts of the code should be modified similarly.

The different models present are

  • userdetails
  • education
  • experience
  • projects
  • skills
  • achievements

To contribute send a PR with modifications in one of the above mentioned models of your choice , do not modify multiple models at a single PR.

Check UserModel

class UserModel(db.Model,UserMixin):
which currently has been modified for this and the routes and forms are making use of the new model name in the other files

convert html resume to template type

Under the resume/templates directory I have two resume templates present

  • resume.html
  • resume-template.html
    the resume.html is able to grab data incoming from flask as it uses templating , it would be cool if the resume-template which is right now pure html would also be converted into the same kind .

Further enhancement: add a projects section in the resume-template.html to hold the projects data

Login form styling is off

Currently the form looks like below
image

However, I believe it should look like this
image

I'm willing to make a PR with the required changes, however I wanted to ask a question first as I'm not familiar with Flask. The lines in question look like this within the html template

<div class="form-check">
    {{ form.remember(class="form-check-input") }}
    {{ form.remember.label(class="form-check-input") }}
</div>

Does the label have to be generated using these template filters? Or can I change this to something like this?

<div class="form-check">
    <label class="form-check-input">
        {{ form.remember(class="form-check-input") }}
        Remember Me
    </label>
</div>

Don't want to go astray from best practices with the framework, so want to check before I start making changes.

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.