Close Menu
Soshace Digital Blog

    Subscribe to Updates

    Get The Latest News, Updates, And Amazing Offers

    What's Hot
    JavaScript

    Build Real-World React Native App #6: Show Bookmark and Categories

    LinkedIn

    Nurturing LinkedIn Prospects Through Consistent Engagement

    Startups

    Strategies for Maintaining Agility in Your Startup’s Growth

    Important Pages:
    • Home
    • About
    • Services
    • Contact Us
    • Privacy Policy
    • Terms & Conditions
    Facebook X (Twitter) Instagram LinkedIn YouTube
    Today's Picks:
    • Scaling Success: Monitoring Indexation of Programmatic SEO Content
    • Leveraging Influencers: Key Drivers in New Product Launches
    • How Privacy-First Marketing Will Transform the Industry Landscape
    • The Impact of Social Proof on Thought Leadership Marketing
    • Balancing Value-Driven Content and Promotional Messaging Strategies
    • Top Influencer Marketing Platforms to Explore in 2025
    • Emerging Trends in Marketing Automation and AI Tools for 2023
    • Strategies to Mitigate Duplicate Content in Programmatic SEO
    Wednesday, September 10
    Facebook X (Twitter) Instagram LinkedIn YouTube
    Soshace Digital Blog
    • Home
    • About
    • Services
    • Contact Us
    • Privacy Policy
    • Terms & Conditions
    Services
    • SaaS & Tech

      Maximizing Efficiency: How SaaS Lowers IT Infrastructure Costs

      August 27, 2025

      Navigating Tomorrow: Innovations Shaping the Future of SaaS

      August 27, 2025

      Maximizing Impact: Strategies for SaaS & Technology Marketing

      August 27, 2025
    • AI & Automation

      Enhancing Customer Feedback Analysis Through AI Innovations

      August 27, 2025

      Navigating the Impact of AI on SEO and Search Rankings

      August 27, 2025

      5 Automation Hacks Every Home Service Business Needs to Know

      May 3, 2025
    • Finance & Fintech

      Critical Missteps in Finance Marketing: What to Avoid

      August 27, 2025

      Analyzing Future Fintech Marketing Trends: Insights Ahead

      August 27, 2025

      Navigating the Complex Landscape of Finance and Fintech Marketing

      August 27, 2025
    • Legal & Compliance

      Exploring Thought Leadership’s Impact on Legal Marketing

      August 27, 2025

      Maximizing LinkedIn: Strategies for Legal and Compliance Marketing

      August 27, 2025

      Why Transparency Matters in Legal Advertising Practices

      August 27, 2025
    • Medical Marketing

      Enhancing Online Reputation Management in Hospitals: A Guide

      August 27, 2025

      Analyzing Emerging Trends in Health and Medical Marketing

      August 27, 2025

      Exploring Innovative Content Ideas for Wellness Blogs and Clinics

      August 27, 2025
    • E-commerce & Retail

      Strategic Seasonal Campaign Concepts for Online and Retail Markets

      August 27, 2025

      Emerging Trends in E-commerce and Retail Marketing Strategies

      August 27, 2025

      Maximizing Revenue: The Advantages of Affiliate Marketing for E-Commerce

      August 27, 2025
    • Influencer & Community

      Leveraging Influencers: Key Drivers in New Product Launches

      August 27, 2025

      Top Influencer Marketing Platforms to Explore in 2025

      August 27, 2025

      Key Strategies for Successful Influencer Partnership Negotiations

      August 27, 2025
    • Content & Leadership

      The Impact of Social Proof on Thought Leadership Marketing

      August 27, 2025

      Balancing Value-Driven Content and Promotional Messaging Strategies

      August 27, 2025

      Analyzing Storytelling’s Impact on Content Marketing Effectiveness

      August 27, 2025
    • SEO & Analytics

      Scaling Success: Monitoring Indexation of Programmatic SEO Content

      August 27, 2025

      Strategies to Mitigate Duplicate Content in Programmatic SEO

      August 27, 2025

      Effective Data Visualization Techniques for SEO Reporting

      August 27, 2025
    • Marketing Trends

      How Privacy-First Marketing Will Transform the Industry Landscape

      August 27, 2025

      Emerging Trends in Marketing Automation and AI Tools for 2023

      August 27, 2025

      Maximizing ROI: Key Trends in Paid Social Advertising

      August 27, 2025
    Soshace Digital Blog
    Blog / Python / Flask / Email Support with Flask
    Flask

    Email Support with Flask

    SASANKABy SASANKAFebruary 3, 2021No Comments13 Mins Read
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr Email Reddit
    Email Support with Flask
    Email Support with Flask
    Share
    Facebook Twitter LinkedIn Pinterest Email Copy Link
    Email Support with Flask
    Email Support with Flask

    This article is aimed at developers who are interested in implementing email support with Flask. In the following example, I will start with an overview of the Flask-Mail package followed by the code that explains to integrate email support with the Flask Web Application.


    1) Application Overview

    One of the basic functions of any web application is to send emails. As a Python developer, you would have heard about the standard mail library smptlib which is quite easy to implement email functionality.  The Flask-Mail extension on the other hand wraps smptlib and integrates it nicely with Flask making it much easier and effective to use.

    To demonstrate the usage of email integration with Flask in this article let’s create a small application. We will create a small web interface for our Admin staff to add new users to the team and notify the Operations team with an email when a new user is onboarded.

    Our flask application will have a home page for admins with add user button to add any new users to the database (SQLite as the backend) and notify the operations team email as soon as a new user is added.


    2) Configuring our Back end – SQLite

    We will first focus on getting our back end configured. Python has packages for most database engines, both open source, and commercial. Flask on other hand puts no restrictions on what database packages can be used, so you can work any of your favorite databases.

    NOTE:  You need not choose a framework that has integration with Flask, However, it will save you from having to write the integration code yourself.

    Flask-SQLAlchemy is a Flask extension that simplifies the use of SQLAlchemy inside Flask applications.

    Let’s install the Flask-SQLAlchemy extension using pip.

    pip install flask-sqlalchemy

    In Flask-SQLAlchemy, a database is specified as a URL. So remember for SQLite on Linux, Unix, or macOS specify the database as
    sqlite:////absolute/path/to/database while on windows use the URL as sqlite:///z:/absolute/path/to/database.

    SQLALCHEMY_DATABASE_URI in the flask can be used for configuring the URL of the SQLite database. The below code shows thee configuration used for the SQLite database.

    # imports 
    
    import os
    from flask import Flask, render_template, session, redirect, url_for, request
    from flask_sqlalchemy import SQLAlchemy
    
    """
        Configuring the SQLite database...
    """
    # set the directory
    db_directory = os.path.abspath(os.path.dirname(__file__))
    
    # configure the database URL
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(db_directory, 'dbusers.sqlite')
    
    # configure to use less memory
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    # initiate the database
    db = SQLAlchemy(app)
    
    

    In the above code, db object represents our SQLite database.


    2a) USERS table/model definition

    We need to have a table called USERS in the database to store the details of the users. When referring to the persistent entities in the application the term model is used. A model is typically a Python class with attributes that match the columns of a corresponding database table (in our case USERS table).

    # -------------------------------------------------------------------------
    #                        Data Model Definition
    # -------------------------------------------------------------------------
    class User(db.Model):
        """
             Class: User
          Function: Data-model Definition for users table
        """
        __tablename__ = 'users'
        unq_id = db.Column(db.Integer, primary_key=True)
        user_full_name = db.Column(db.String(120), unique=True, index=True)
    
        def __repr__(self):
            return '<User  %r>' % self.user_full_name
    
    
    # Import the objects with flask shell
    @app.shell_context_processor
    def make_shell_context():
        return dict(db=db, user_full_name=User)

    Few important points from the above code.

    • __tablename__ variable defines the table name in the database, If you omit it, SQLAlchemy assigns a default name.
    • db.Column – defines the column name (note the upper case in Column)
    • __repr__() – We will use this method for debugging and testing. Not a mandatory method

    2b) Table Creation

    Now that our configuration of the database is completed, time to create the USERS table using the Python shell as our table creation is a once-off activity.

    I’m going to instruct Flask-SQLAlchemy to create a database based on the model classes. The db.create_all() function locates all the subclasses of db.Model and creates corresponding tables in the database for them.

    Open the shell or anaconda prompt( on Windows) navigate to the root directory of the app and fire the below commands sequentially.

    flask shell
    from app import db
    db.create_all()

    Refer to the screenshot below on how to invoke the flask shell commands.

    Flask shell to create the users' table
    Flask shell to create the users’ table

    Upon validating the application directory, you will now see a new file there called dbusers.sqlite, the name that was given to the SQLite database in the configuration.  Refer to the below screenshot as a reference.

    Flask shell to create users table validation
    Flask shell to create users table validation

    2c) Inserting Sample Rows

    Flask shell insert sample users
    Flask shell insert sample users

    The following example creates a few users in the USERS database. The constructors for models accept initial values for the model attributes as keyword arguments. The unq_id attribute of these new objects is not set explicitly as the primary keys in many databases are managed by the database itself.

    >>> from app import User
    >>> user1 = User(user_full_name='Roger Federer')
    >>> user2 = User(user_full_name='Rafael Nadal')

    For now, the objects exist only on the Python side and they have not been written to the database yet.

    Read More:  Dockerizing Django with Postgres, Redis and Celery

    Flask-SQLAlchemy provides db.session to manage the changes to the database. First, we need to add the objects to the session as below.

    >>> db.session.add(user1)
    >>> db.session.add(user2)

    Now to write the objects to the database, the session needs to be committed by calling its commit() method.

    >>> db.session.commit()

    2d) Validating the data

    Flask-SQLAlchemy makes a query object available in each model class. To return the entire contents of our USERS table is with the all() method.

    >>> User.query.all()
    [<User  'Roger Federer'>, <User  'Rafael Nadal'>]

    I will just consolidate all the flask shell commands used above in one piece of code below.

    >>> flask shell
    >>> from app import db
    >>> db.create_all()
    >>> from app import User
    >>> user1 = User(user_full_name='Roger Federer')
    >>> user2 = User(user_full_name='Rafael Nadal')
    >>> db.session.add(user1)
    >>> db.session.add(user2)
    >>> db.session.commit()
    >>> User.query.all()

    3) Configuring Flask – Mail

    First thing first let us install Flask mail library before we go on to more details.

    pip install flask-mail

    As per the official documentation, we can set up below configuration keys in our application to configure the SMTP server. Just remember, If no configuration is given, Flask-Mail connects to localhost at port 25 and sends email without authentication.

    • MAIL_SERVER – Hostname or IP address of the email server.
    • MAIL_PORT – Port  Number of the email server.
    • MAIL_USE_SSL – Enable Secure Sockets Layer (SSL) security.
    • MAIL_USE_TLS – Enable Transport Layer Security (TLS) security.
    • MAIL_USERNAME – EMail user name.
    • MAIL_PASSWORD – EMail user Password.
    • MAIL_DEFAULT_SENDER – EMail Default Sender name and email.

    I will now show you how to configure our application to send email through GMAIL account.

    import os
    from flask_mail import Mail
    
    app.config['MAIL_SERVER'] = 'smtp.gmail.com'
    app.config['MAIL_PORT'] = 587
    app.config['MAIL_USE_TLS'] = True
    app.config['MAIL_USE_SSL'] = False
    app.config['MAIL_DEFAULT_SENDER'] = ('Sender name', 'sender email')
    
    
    mail = Mail(app)

    Couple of important settings you should be aware of when using a GMAIL account with FLask.

    1. Enabling Access for the less secure app:  Python’s smtplib library does not support the OAuth2 method of authentication which is required by any external applications to connect to the GMAIL server. To make your Gmail account accept standard SMTP authentication, go to your Google account settings page and select “Security” from the left menu bar. On that page, locate the “Allow less secure apps” setting and make sure it is enabled.  Refer to the below screenshot for reference.
    GMAIL Turn on access for less secure apps
    GMAIL Turn on access for less secure apps
    1. SMTP Authentication error:  This is a common error that you might face while configuring an email.  You can avoid this error by making sure you initialize the flask-mail only after setting up the configuration parameters first.

      SMTP Authentication error
      SMTP Authentication error

    NOTE: Always use environment variables to set your account username and password rather than hardcoding it in your script.


    3a) Testing the email configuration

    To test the configuration, you can start a shell session and send a test email as shown in the below code.

    >>> from app import mail
    >>> from flask_mail import Message
    >>> message = Message("This is a test email send with love..", recipients=['<email>@gmail.com'])
    >>> message.body = "This is a test email send with love.."
    >>> mail.send(message)

    3b) Integrating email with web application

    We will create a function for sending the email and avoid having to create email messages manually every time.

    # -----------------------------------------------------------------------------------------
    # send email function
    def send_email(recipient, email_subject, email_body):
        """
          function: send email
           :param : recipient - deliver the email to this recipient
                    email_subject - subject of the email
                    email_body - Body of the mail..
    
        """
        message = Message(email_subject, recipients=[recipient])
        message.body = email_body
        mail.send(message)

    The send_email() function takes the recipient’s email address, a subject line, and an email body.


    4. Integration With Flask Web Application

    Flask is very simple to use, but it supports many extensions that are useful in professional web development. It’s my personal favorite among Python web frameworks because it balances ease of use with a rich feature set.

    The flask package also includes the jinja2 template library that is quite powerful with a very rich set of features.

    First thing first let us set up the app like below and then we will go into details.

    ~/Flask-Mail
            |-- app.py
            |__ /views
                |-- UserForm.py
            |__ /templates
                |__ /includes
                    |-- _flashmsg.html
                    |-- _formhelpers.html
                |__ index.html

    Time to discuss the components in detail before we go and run it to see LDAP validation. We will first discuss the design steps that are being implemented. The design is pretty simple and I will do my best to explain it in that way.

    4a). Design Steps

    1. The Admin user will initiate the flask web application through the URL which displays the index page with a box to submit the user name to be added.
    2. Upon adding the user name (full name), the user is validated against our database.
    3. If the User is in the database no action will happen.
    4. If the User is not in the database, the user is added to the database, and an email is sent to the pre-configured email.

    4b) Components: Templates

    I will be using a single index template simple enough for this demonstration purpose.

    index.html

    This is the home page for the admin user to add a new user to the database. The HTML template is quite simple with just the userbox and submits button.

    In this template, we have used Jinja to render fields from the Flask form stored in the /views directory. In this template, we have used the CSRF (Cross Site Request Forgery) for security purposes.

    We have protected our web app from the CSRF attack, so we need to use it in all our forms just to make sure we are not be attacked by anonymous requests.

    Lets now look at our index.html

    <html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
              integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
        <title>Flask Example</title>
    </head>
    
    
    <br>
    <body class="bg-gradient-white">
    <div id="page-wrapper">
        <div class="container">
            {% include 'includes/_flashmsg.html' %}
            {% from "includes/_formhelpers.html" import render_field %}
            <div class="row justify-content-center">
                <div class="col-xl-10 col-xl-12 col-xl-9">
                    <div class="card o-hidden border-0 shadow-lg my-5">
                        <div class="card-body p-0">
                            <div class="row">
                                <div class="col-lg-6">
                                    <div class="p-4">
                                        <div class="text-center">
                                            <h1 class="h4 text-gray-900 mb-4">
                                                <button type="button" class="btn btn-danger btn-circle-sm"><i
                                                        class="fa fa-mask"></i></button>
                                                Flask-Main Integration
                                            </h1>
                                        </div>
    
                                        <div class="page-header">
                                            {% if not known %}
                                                <p>Lets add a new user to the database!</p>
                                            {% else %}
                                                <p>User {{ user_full_name }} added to the database and Ops team notified</p>
                                            {% endif %}
                                        </div>
    
                                        <form method="POST" class="form-horizontal needs-validation"
                                              action="{{ url_for('index') }}">
                                            {{ form.csrf_token }}
                                            <div class="form-group row">
                                                <div class="col-sm-10">
                                                    {{ render_field(form.user_name_pid, class_="form-control", value="") }}
                                                </div>
                                            </div>
    
                                            <div class="form-group row">
                                                <div class="col-sm-4 col-form-label">
                                                    <input type="submit" class="btn btn-primary" onclick="loading();">
                                                </div>
                                            </div>
    
                                        </form>
                                        <hr>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
            integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
            integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
            crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
            integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
            crossorigin="anonymous"></script>
    </body>
    </html>

     

    4c) Components: Views

    UserForm.py

    This is the form that will be rendered in the above index.html. The form is imported from flask_wtf with just one string field.

    from app import *
    from flask_wtf import Form
    from wtforms import StringField, validators
    
    
    class LoginValidation(Form):
        user_name_pid = StringField('', [validators.Required()],
                                    render_kw={'autofocus': True, 'placeholder': 'Enter User Full Name'})
    

     

    4d) Components: app.py

    This is the heart of our program. The app.py contains the details that are discussed in the above sections.

    import os
    from flask import Flask, render_template, session, redirect, url_for, request
    from flask_sqlalchemy import SQLAlchemy
    from flask_mail import Message
    from flask_bootstrap import Bootstrap
    from flask_wtf.csrf import CSRFProtect
    
    from flask_mail import Mail
    from views.UserForm import *
    
    app = Flask(__name__)
    bootstrap = Bootstrap(app)
    
    app.config.from_object('settings')
    app.secret_key = os.urandom(24)
    app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
    
    app.config['MAIL_SERVER'] = 'smtp.gmail.com'
    app.config['MAIL_PORT'] = 587
    app.config['MAIL_USE_TLS'] = True
    app.config['MAIL_USE_SSL'] = False
    app.config['MAIL_USERNAME'] = ''
    app.config['MAIL_PASSWORD'] = ''
    app.config['MAIL_DEFAULT_SENDER'] = ('Sender name', 'sender email')
    app.config['OPS_TEAM_MAIL'] = ''
    csrf = CSRFProtect(app)
    mail = Mail(app)
    
    # -----------------------------------------------------------------------------------------
    """
        Configuring the SQLite database...
    """
    # set the directory
    db_directory = os.path.abspath(os.path.dirname(__file__))
    
    # configure the database
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(db_directory, 'dbusers.sqlite')
    
    # configure to use less memory
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    # initiate the database
    db = SQLAlchemy(app)
    
    
    # -------------------------------------------------------------------------
    #                        Data Model Definition
    # -------------------------------------------------------------------------
    class User(db.Model):
        """
             Class: User
          Function: Data-model Definition for users table
        """
        __tablename__ = 'users'
        unq_id = db.Column(db.Integer, primary_key=True)
        user_full_name = db.Column(db.String(120), unique=True, index=True)
    
        def __repr__(self):
            return '<User  %r>' % self.user_full_name
    
    
    # -----------------------------------------------------------------------------------------
    # Import the objects with flask shell
    @app.shell_context_processor
    def make_shell_context():
        return dict(db=db, user_full_name=User)
    
    
    # -----------------------------------------------------------------------------------------
    # send email function
    def send_email(recipient, email_subject, email_body):
        """
          function: send email
           :param : recipient - deliver the email to this recipient
                    email_subject - subject of the email
                    email_body - Body of the mail..
    
        """
        message = Message(email_subject, recipients=[recipient])
        message.body = email_body
        mail.send(message)
    
    
    # -----------------------------------------------------------------------------------------
    @app.route('/', methods=['GET', 'POST'])
    def index():
        # initiate the form..
        form = LoginValidation()
    
        if form.validate_on_submit():
            user = User.query.filter_by(user_full_name=form.user_name_pid.data).first()
            if user is None:
                print(f" *** {user} Not found")
                user = User(user_full_name=form.user_name_pid.data)
                db.session.add(user)
                db.session.commit()
                email_subject = f" New User Alert - {str(user)}  "
                email_body = f" New User Added to the database - {str(user)}  "
                send_email(app.config['OPS_TEAM_MAIL'], email_subject, email_body)
                session['known'] = False
            else:
                print(f" *** {user} found")
                session['known'] = True
            session['user_full_name'] = form.user_name_pid.data
            form.user_name_pid.data = ''
            return redirect(url_for('index'))
    
        return render_template('index.html',
                               form=form,
                               name=session.get('user_full_name'),
                               known=session.get('known', False))
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    
    
    

    5. Final Step – Executing The Code

    Flask Mail Home Page
    Flask Mail Home Page

    It is time now to initiate the Flask App. Once the APP is initiated, it’s time to open the browser and hit the URL – “http://127.0.0.1:5000/login”.

    Flask Mail Adding user
    Flask Mail Adding user

    Now, let’s enter the user name and hit the submit button. The new user will be updated in the back-end database and the email will be triggered back to the recipient.

    Flask Mail Gmail Notification
    Flask Mail Gmail Notification

    The article cover image had been downloaded from Unsplash.

    If you liked this article and if it helped you in any way, feel free to like it and subscribe to this website for more tutorials.

    If you believe this article will be of big help to someone, feel free to share.

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    SASANKA

      Related Posts

      Flask Development Made Easy: A Comprehensive Guide to Test-Driven Development

      January 4, 2024

      Creating Our Own Chat GPT

      July 27, 2023

      The Ultimate Guide to Pip

      June 12, 2023
      Leave A Reply Cancel Reply

      You must be logged in to post a comment.

      Stay In Touch
      • Facebook
      • Twitter
      • Pinterest
      • Instagram
      • YouTube
      • Vimeo
      Don't Miss
      Interview April 24, 2019

      Behavioral Interview 101: How to Tackle the Toughest Questions | Sample Answers Included

      Behavioral interview is not just a new recruitment craze but, in fact, a fantastic method to check both mental and stress capabilities of candidates. Here, you’ll find sample questions and answers to the toughest behavioral interview questions.

      Verifying an Email Address Without Sending an Email in NodeJS

      October 21, 2020

      23. Уроки Node.js. Домены, “асинхронный try..catch”. Часть 3.

      November 18, 2016

      Top Lead Generation Strategies for MSPs in 2025

      May 3, 2025

      Categories

      • AI & Automation
      • Angular
      • ASP.NET
      • AWS
      • B2B Leads
      • Beginners
      • Blogs
      • Business Growth
      • Case Studies
      • Comics
      • Consultation
      • Content & Leadership
      • CSS
      • Development
      • Django
      • E-commerce & Retail
      • Entrepreneurs
      • Entrepreneurship
      • Events
      • Express.js
      • Facebook Ads
      • Finance & Fintech
      • Flask
      • Flutter
      • Franchising
      • Funnel Strategy
      • Git
      • GraphQL
      • Home Services Marketing
      • Influencer & Community
      • Interview
      • Java
      • Java Spring
      • JavaScript
      • Job
      • Laravel
      • Lead Generation
      • Legal & Compliance
      • LinkedIn
      • Machine Learning
      • Marketing Trends
      • Medical Marketing
      • MSP Lead Generation
      • MSP Marketing
      • NestJS
      • Next.js
      • Node.js
      • Node.js Lessons
      • Paid Advertising
      • PHP
      • Podcasts
      • POS Tutorial
      • Programming
      • Programming
      • Python
      • React
      • React Lessons
      • React Native
      • React Native Lessons
      • Recruitment
      • Remote Job
      • SaaS & Tech
      • SEO & Analytics
      • Soshace
      • Startups
      • Swarm Intelligence
      • Tips
      • Trends
      • Vue
      • Wiki
      • WordPress
      Top Posts

      Yarn vs. npm in 2019: Choosing the Right Package Manager for the Job

      Beginners June 11, 2019

      JAMstack Architecture with Next.js

      JavaScript March 15, 2024

      Building a Telegram Bot with Node.js

      JavaScript December 6, 2019

      Streamlining Resource Allocation for Enhanced Project Success

      JavaScript December 18, 2024

      Subscribe to Updates

      Get The Latest News, Updates, And Amazing Offers

      About Us
      About Us

      Soshace Digital delivers comprehensive web design and development solutions tailored to your business objectives. Your website will be meticulously designed and developed by our team of seasoned professionals, who combine creative expertise with technical excellence to transform your vision into a high-impact, user-centric digital experience that elevates your brand and drives measurable results.

      7901 4th St N, Suite 28690
      Saint Petersburg, FL 33702-4305
      Phone: 1(877)SOSHACE

      Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn
      Our Picks
      Tips

      Top 9 Web Components UI Libraries

      Events

      Google I/O 2019: New JavaScript Features

      JavaScript

      Where to Hire Remote Developers

      Most Popular

      Overcoming the Challenges of B2B Lead Generation Today

      B2B Leads

      Работа с Redmine

      Wiki

      Essential Recruitment Metrics: Key Measures for Success

      Recruitment
      © 2025 Soshace Digital.
      • Home
      • About
      • Services
      • Contact Us
      • Privacy Policy
      • Terms & Conditions

      Type above and press Enter to search. Press Esc to cancel.