Tactical Project Manager

Microsoft Project Example – Let’s create your first real project in a just few steps

  • by Adrian Neumeyer

Creating a project plan in Microsoft Project isn’t difficult at all.

This article will teach you how to create a simple project plan using a real project example.

Some basic configuration before you start

Before you create a schedule, you need to make two important changes in your settings:

Setting change 1: Make Auto Scheduling the default

o to File –> Options

Microsoft Project Example:Program options

Make sure to set Auto Schedule for new tasks:

Microsoft Project Example: Making auto schedule the default

What does Auto Scheduled mean?

It means that new tasks will be scheduled automatically based on your project start date (or end date). More specifically, Project will determine the optimal start and end date for each task automatically, which is what we want (why would we use a computer-based scheduling tool if we would not want to automate the scheduling? Read more about manual vs. automatic scheduling in Project .)

Close the window. At the bottom left corner of the screen it should look like this:

Microsoft Project Example: Indicator that automatic scheduling has been enabled

Setting change 2: Enable immediate calculation

We want Microsoft Project to re-calculate the project schedule immediately after we make a change. This ensures the data you see is always up to date. Unless you run a mega-project, leave the setting enabled.

how to make an project file

Now, let’s schedule a simple project!

Our sample project: We are setting up our own business. We have picked a business idea and now we need to go from writing a business plan to a fully established business. For these steps, we are going to create a project plan.

Step 1: Create a new project

Microsoft Project Example: Create a new project

Choose Blank Project.

You will see a blank window.

First, let’s create a Project Summary Task . This is like an overall “wrapper” task that contains our entire project.

Microsoft Project Example: Create a summary task to cover your entire project

Here’s what you should see:

Microsoft Project Example: What it looks like when you have created a project summary task

Give your project a suitable name:

Microsoft Project Example: Giving your project a suitable project name

Don’t worry about the duration and the dates – we’ll take care of this later.

Step 2: Enter a project start date

You need to tell Project the date at which the project officially starts.

To set the project start date, open the Project tab and click Project Information :

Microsoft Project Example: Opening the Project Information dialog

Enter the project start date (in our example: 14th September 2020):

Microsoft Project Example: This is where you set the start date of your project

Note: You can decide whether you want Microsoft Project to schedule your project forward from a specific start date or backward from a desired end date. If you already have committed to a golive date and want to know by when you need to begin work, then chose Schedule from Project End Date to trigger the backward planning. For this example, we want to base our schedule on a start date of 14th September 2020.

Press OK after you’ve entered the project start date. You can see now the start date for our tasks is 14th September 2020.

Step 3: Enter the list of tasks

In this project, we need to accomplish the following tasks:

  • Create business plan
  • Get business license
  • Set up bank account
  • Get funding
  • Pick a business location
  • Set up office equipment and furniture
  • Run promotion

If you look at the list, you notice that the tasks must be performed in a specific order. There are also some dependencies between the tasks.

For example, we can’t get a bank account without having a business license. We also can’t get funding (i.e. a bank loan) without having a business license. And of course we need the money to hire people for our store. So, everything is connected with each other.

Now let’s enter those tasks into Microsoft Project.

Enter the tasks into the table next to the Gantt view :

Microsoft Project Example: List of tasks in the Gantt view, before they were linked

At this stage, Project doesn’t have all the information it needs to create a schedule. It doesn’t know how long each task is going to take. Therefore the Duration column has a question mark and the start and finish dates aren’t correct yet.

Let’s continue. You now need to “link” all tasks in the right order and enter the estimated durations .

Step 4: Enter task durations

Now, tell Project how long each task is going to take. What you enter here is the duration of the task, which is not the same as the effort. Duration is the total timespan until a task is finished. Effort (in Project, effort is called Work ) is the amount of actual working time.

Enter the estimated duration in the duration column. Tip: you can either use the up/down ar- rows to change the values or enter for example “3d” to specify 3 days or “2w for 2 weeks of duration.

how to make an project file

Step 5: Link tasks in the right sequence

As I mentioned before, tasks should be performed in a specific order. And we want to show this order in Project. Let’s link the tasks one after each other.

There are two ways how you can link tasks:

  • The first method is to enter for each task which other task should come before it. That is, by defining a “predecessor”.
  • The second method is by using the “link” button from the menu

I’ll show you both methods now.

Let’s look at the first two tasks: Create business plan and Get business license. We could do both at the same time, since we don’t necessarily have to have a business plan to apply for a license. But we want to focus on our business plan, get it done, and then work on the next task. So getting a business license should follow after creating business plan .

To tell Project that getting business license comes after create business plan , you can simply enter create business plan as a predecessor for task Get business license (in the Predecessors column).

The tasks are organized in a way similar to Excel using row numbers. These row numbers are used to identify tasks .

Do the following: In the predecessor column, enter “1” for task #2 (Get business license):

Microsoft Project Example: Entering the predecessor of each task

Watch the result: Task “Get business license” is now scheduled right after task “Create busi- ness plan” (look at the blue task bars).

Did you notice that your change immediately changed the Gantt chart on the right side? Also note that Project skipped the weekend because our calendar settings defined that there should be no work on weekends.

Next, we still have to arrange the other tasks in the right order. To do so, I now show you the other way of linking dependent tasks. There is a shortcut in the menu. Select the remaining tasks in rows 2-8 , as I have done below:

how to make an project file

From the Task tab press the link button (watch what happens to the Gantt view!).

Microsoft Project Example: Button for linking tasks

Our tasks are now arranged in the right order, and the  Gantt chart is updated :

Microsoft Project Example: Updated Gantt chart with tasks arranged in sequential order

Pro tip: If you have a lot of tasks and you schedule is very wide and want to jump to the respec- tive task in the Gantt view, just right-click on the task and choose Scroll to Task. This will pull up the corresponding task bar.

Microsoft Project Example: Use the Scroll to Task option to quickly scroll to the selected task in the work breakdown structure

Step 6: Add a milestone to your schedule

In every project you have certain milestones you are working towards. Milestones are certain points in time where some goal must be achieved. For example, a document must be prepared or a component must be finished. We haven’t included any milestone yet, so let’s do that now.

To mark the point where we’ve fully set up our business, create a new milestone named ‘ Business fully set up ’. How?

You create a milestone by changing a task’s duration to zero (zero days) .

Milestones are shown as a grey diamonds:

Microsoft Project Example: Gantt chart with a milestone

I didn’t mention this before, but of course you need to schedule the “milestone task” right after the last regular task (Run promotion). For this, you need to enter a predecessor for the milestone task.

The milestone we entered also marks the estimated finish date of the project.

Excellent job! You have now created your first schedule in Project.

If you want to dive deeper into Project, take a look at my e-Book:

Adrian Neumeyer

Hi! I'm Adrian, former Senior IT Project Manager and founder of Tactical Project Manager. I created the site to help you become an excellent project leader and manage intense projects with success!

View all posts

Hi! Have you tried my Excel-based Resource Planner ? There's no easier way to manage workload for your team!

Main screen resource planner

  • Assign team members to projects
  • Plan & track individual workload
  • See who’s over/under-utilized
  • 1-Click Planning sheet generation

Recommended articles

how to make an project file

How To Checklist Your Way To Happiness

In this article you'll learn how using checklist in your personal life can make you happier and more successful.

Inventory Reconciliation Guide - Featured image showing warehouse workers performing inventory count

Inventory Reconciliation: Aligning Your Physical Inventory to Your Inventory Records

Have you heard of inventory reconciliation? Did you, in the past, conduct inventory taking that  involves reconciling your physical inventory...

how to make an project file

A Simple Guide to E-Commerce Demand Forecasting (with Example)

Hello there! Are you running an e-commerce business and trying to estimate future demand? Would you like to know what...

  • Contact sales
  • Start free trial

Project creator

Create any project quickly and easily.

  • Organize projects, tasks and teams
  • Plan, track and report work
  • No limit to how many projects you can make

Project creator with Gantt charts

Project maker without hassles

Create, measure and report on your projects from start to finish with our user-friendly project creator software.

Plan, track and report on projects

Plan on Gantt charts, view real-time data with dashboards and report on progress with one-click reporting tools.

Manage teams and attach files

Keep your team’s work flowing and maintain high productivity by assigning tasks from any of the multiple project views.

Task list in ProjectManager

Import your task list

Create a new project by importing your existing task lists. When you create or import your tasks, they can be seen in any of our project views.

  • Import Excel, CSV or MSP files—all your data is carried over
  • Use one of our industry-specific templates to help you get started
  • Automatically create project timelines from your task lists

Get started

Organize your tasks

We make it easy to avoid bottlenecks later in the project with powerful task management features. Break down large projects into a series of manageable tasks.

  • Organize individual projects into folders
  • Set milestones to mark the end of a project phase
  • Link dependent tasks on the Gantt chart

Project creator with collaboration features on a Gantt chart

Make changes in your project plan

Stay flexible as expectations, timelines, costs and scope change by quickly making changes to your project plan. Adjust schedules, re-assign tasks and reallocate resources with one project creator.

  • Drag-and-drop tasks to edit plans as changes occur
  • Change a task’s due date and every project view updates
  • Share the new plan easily by exporting it

Keep your project secure

Set security preferences on features and data at the account or project level. Keep your project management data safe with ProjectManager.

  • Create custom roles with specific permissions
  • Single sign on (SSO)
  • Create private projects only the invited can join

Project creator with global security settings

Award-winning project creator tools and integrations

ProjectManager is an online project creator that has multiple project management tools such as Gantt charts, kanban boards, task lists and more for you to plan, schedule and track your projects as you like.

how to make an project file

Multiple project views

Work the way you want and choose the project view that fits your work style.

how to make an project file

Collaborative platform

Keep teams connected and commenting in real time at the task level.

how to make an project file

Stay updated

Email and in-app notifications alert you to any changes, updates or assignments.

how to make an project file

Import and export

Import Excel and MPP files to start new projects, then export them to share with stakeholders.

how to make an project file

Detailed reports

Generate in-depth reports on project status and more, then filter to get specific insights.

how to make an project file

Balance workload

Check the color-coded workload chart to ensure that their work is evenly distributed.

how to make an project file

Online timesheets

Track your team’s logged hours with timesheets that can be locked when approved for security.

how to make an project file

Project dashboards

Instantly get a high-level view of your project with our real-time dashboards.

Standout features of our project maker

Get started on your next project by importing a file, using a template or just manually adding your tasks within our project creator. You get all the features you need to manage, plan, schedule, monitor and control your project to deliver it on time and within budget.

Find what you need fast

Find what you’re looking for fast by filtering the project within any of the project views. Reports can also be filtered to focus on what you’re tracking. Customize the Gantt chart and see which tasks are overdue, set up an over-allocation message and more.

Project creator with timelines and task dependencies

Keep your costs in check

Set up your budget on the Gantt chart when you create a new project. Our features calculate your costs and give you the cost-to-budget ratio. Follow your budget on the real-time dashboard and reports to deliver your project within budget.

Project creator with cost tracking

A more technical project view

Use the sheet of your Gantt chart to hide the bar chart. Now you can view just the raw data for a more technical view of your project plan. The sheet view can do everything the Gantt does, from linking tasks, assigning work and customizing columns.

Project creator with spreadsheets for management

Manage your team with ease

Mark your team’s availability with the holidays feature. It sets the planned time out of the office which makes it easy to know who can work and who cannot when planning your project. This works for global, country and personal holidays. Change availability as needed.

Project creator with project calendars

Streamline payroll and control costs

Keep track of your team’s working hours with timesheets. When they log the time they worked on a task, you can track their progress. Timesheets can repeat last week’s tasks and auto-fill as needed. Once delivered to a manager for approval, they can be locked and secured.

Project creator with timesheets and time tracking

Manage multiple projects at once

Manage more than one project, whether a portfolio or program, with the same controls you have with singular projects. Generate portfolio status reports and get a high-level view of all your projects when you group them together with the portfolio dashboard.

Project creator with personalized dashboards

Integrate with over 1,000 Business Apps

Office 365 logo

Seamless importing and round-tripping of Microsoft Project plans, Excel files & CSV files.

Google logo

Manage tasks right in your Gmail app! Plus, sync to Google Drive & your Google Calendars.

Jira logo

View and update all your ProjectManager tasks in Jira for maximum efficiency.

Slack logo

Share all your project conversations in your favorite Slack channels.

Keep the data flowing when you connect with Salesforce via our Zapier integration.

Trusted by 35,000+ users worldwide

Logos of companies that use ProjectManager

Start your free 30-day trial

Deliver faster, collaborate better, innovate more effectively — without the high prices and months-long implementation and extensive training required by other products.

How to Build a Programming Project Step by Step

This tweet about building projects really resonated with me:


It says a lot about how programmers build the projects we all admire. It pin-points the less glamorous parts of our activities which beginners don't always pay attention to, probably because of their lack of experience.

And that reminds me of my recent experience building a VSCode extension. The extension is meant to make me look like a genius in video tutorials and reduce my recording challenges. (But hey – I am really not a genius 😜).

The extension displays the content of a file per character whenever any key is pressed. It simulates a real-coding experience while I only pay attention to the voice recording. Wow! How did I build that? Well, let's see how it went.

It might go without saying, but you don't know how to build a new project until you've actually built it. Before I started, I didn't feel like I knew what to do and what to bring together. But I was sure of one thing – I knew how to find what I needed. Boom! The research began.

So let me tell you how I did it, so you can get better at building your own projects, too.

Break the Project Down into Smaller Units


I knew it would be hard to find a complete tutorial about what I wanted to build. But it was relatively easy to find tutorial related to each unit of the project. So, I broke the project down into these parts:

  • Installing the VSCode extension.
  • Getting the content of an active file.
  • Breaking down the content of the file into characters. (Word => w, o, r, d).
  • Listening to key-presses.
  • Displaying the character one by one whenever any key was pressed.

Those are the basic things I expected the extension to be able to handle.

But wait! What if I am building a whole website? Don't worry – it's still the same process. This is what I would have done if I wanted to build a website, too.

Step 1: Break everything up into sections

For a website, your manageable sections might look like this:

Step 2: Break the sections down into components

To do this, I would ask myself what I wanted in each section. And then I would list those elements out one by one.

✅ Header: I want a logo, search-box, signup/login button (or other navigation buttons) and settings in the header.

✅ Main: How many column(s) do I need? Does it have to include a left or right sidebar or a list?

✅ Footer: Do I want copyright information and navigation in the footer? Anything else?

Then I'd ask myself what other things I wanted and note them down as I thought of them.

In short, you have to list out everything you want in each section and component. But don't waste too much time on planning, because execution is key. Do it as quickly as possible because once you have a job, you'll probably hardly have any spare time to plan out your projects.

But you might be thinking, Oh, no! I am confused. How do I know all the sections and components I need as a beginner?

That is a good observation because I am not a beginner and I have had experience with of all of these components. That is why I can list them easily.

But it's ok. You will learn all these things along the line. You just need to pay attention to my VSCode extension story. :)

Write Your First Line of Code and Get Stuck‌


After having a clear picture of what to build, I believe the most important thing to kick-start a project is to write you first line of code and get stuck. It is pessimistic, but it helps you to become solution driven.

Instead of being worried unnecessarily because you're not sure of how to start, open you code editor of choice and write your first line of code – even if you get stuck right after that.

You first line of code will probably get deleted or improved upon several times, and that is fine. It is meant to help you overcome procrastination.

In reality, you will always be confused about how to start and what to do. Don't procrastinate because of such feelings, especially after you understand how the project should work in your head or on paper.

Don't try to understand everything before writing your first line of code. You will never understand everything. At least, no one has ever understood everything yet.

No Project is Perfect – Including Google‌


It is easy to want your project to be the best ever built, especially when you are a beginner. I have been there, so I know how it feels.

I was just an art student trying to solve a problem by using web technology. After I failed to hire a web developer to build the project for me because I couldn't afford the price they quoted, I decided to learn how to build it by myself.

Silly me tried to build almost every feature on the internet to make sure my project had all the features others didn't have. Anyway, I killed the project eventually.

The point I am making is don't try to build a project that can't be criticized – there is nothing like that. You need to focus on core features, not extra features that might make the project unusable.

Don't try to make a perfect project or feature – make usable and lovable projects and features instead.

Every Project is Built on Other Projects


After I had a clear picture of what I needed to build the VSCode extension, I had to look into related projects. I opened the source code of vscode-hacker-typer to study how the project handles some of the things I wanted to implement. By doing that, I learnt a bit about VSCode extension APIs.

As I was totally inexperienced in making VSCode extensions, looking into vscode-hacker-typer helped me move from being totally clueless to knowing what to research.

Knowing the name of what you want to deal with is the greatest first step to solving any problem in programming.

For instance, say that there is a feature you like on a related website but you don't know what it is called. How will you research the feature? Well, it is not rocket science.

You can take a picture of the feature and ask for its name in programming groups or ask someone. Or you can discover it name or API by diving into a related project's source code like I did. So check out projects that are similar to your project, learn from them, and copy their features.

Don't Be Afraid to Google


Before I dove into creating the VSCode extension, I didn't even know where to start – but I was sure I would be able to research my way to something reasonable. I started googling different questions:

✅ How to get the content of a VSCode active editor?

✅ How to use VSCode activeTextEditor?

✅ How to use VSCode onDidTextDocumentChange?

Understanding what you want to build is the first step to having relevant search results especially when building a project you have never built. You need to conceptualize the idea or features you want to implement so that you can find solutions you need.

Basic googling tips that can help you get better results

Know the keywords you care about..

For example, if I want to built a landing page with HTML and CSS only, I won't search for something like "How to build a landing page". That will be bring a lot of things I don't want. It has to include the keywords I care about.

Below are examples to study:

  • How to build a landing page with HTML and CSS?
  • How to make a VSCode extension with Typescript (If I want Typescript)?
  • How to make a VSCode extension with JavaScript?

Make sure your expected keywords are included – be specific.

Googling (How to build a landing page with HTML and CSS?) may yield a generic result. That is an issue. But it can be fixed with exact matches.

Use quotes to get exact matches in Google

For example, "How to build a landing page with HTML and CSS" will give you an outcome with the exact words in that search.

If you want to explore general ideas about building a landing page, remove the quotes.

Exclude a search term with (-)

Sometimes, you only want a result with HTML and CSS, but you're getting those with HTML, CSS and JavaScript.

You can use "- JavaScript" to exclude JavaScript. For instance, you can search "How to build a landing page with HTML and CSS - JavaScript.

This is useful when you want to exclude certain keywords.

Switch out your terms

When you want to move from one language, library, or framework to another, you need to use all you know from the first language or framework.

For instance, you want to move from JavaScript to Python and you know how JavaScript works. All your previous search terms or approaches for JavaScript will still be very useful while using Python.

You only need to switch out your specific terms – replace JavaScript with Python in all your searches. Then, you can google "Array in Python" instead of "Array in JavaScript".

You'll Always Get Stuck – and That's OK


‌The problem with "How to" tutorials is that they don't always inform you that getting stuck is a part of the process. The VSCode extension I have been working on is still not working because I am stuck. After thinking through every part, I was stuck while implementing the features.

The VSCode extension API I was using can't be iterated, so I have to find a way to do that. Also, vscode-hacker-typer doesn't use the approach I am using. It records keystrokes and replays them. I want to avoid recording keystrokes. I only want to display the content of an activeTextEditor character by character whenever any key is pressed.

You will always be stuck, and that is why you have to learn How to improve your debugging skills . Getting stuck is a significant part of the process. Your ability to overcome the challenges of getting stuck will determine how far you go in making projects.

It can be tempting to want to quit because you feel you are not as good as everyone else. The reality is that we all struggle behind the scenes. We've all solved a lot of problems through trial and error. We all feel dumb and fake because we are always building on the projects of others.

But don't forget that every amazing project has a less glamorous story you know nothing about behind it. What matters, above all, is making sure you build the project in the end.

Don't forget:

"The genius thing that we did was, we didn't give up" - Jay Z.

Ayobami loves writing history with software development and is currently helping those who are struggling to understand and build projects with HTML, CSS and JavaScript here .

Ayobami loves writing history with JavaScript(React) and PHP(Laravel). He has been making programming fun to learn for learners. Check him out on YouTube: https://bit.ly/3usOu3s

If you read this far, thank the author to show them you care. Say Thanks

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

PyCharm 2023.3 Help

Create and run your first project, before you start.

Ensure that the following prerequisites are met:

You are working with PyCharm Community or Professional

You have installed Python itself. If you're using macOS or Linux, your computer already has Python installed. You can get Python from python.org .

To get started with PyCharm, let’s write a Python script.

Create a Python project

If you’re on the Welcome screen , click New Project . If you’ve already got any project open, choose File | New Project from the main menu.

Although you can create projects of various types in PyCharm, in this tutorial let's create a simple Pure Python project. This template will create an empty project.

Create a new project

Python best practice is to create a dedicated environment for each project. In most cases, the default Project venv will do the job, and you won't need to configure anything.

Still, you can switch to Custom environment to be able to use an existing environment, select other environment types, specify the environment location, and modify other options.

Custom environment options for the new Python project

For more information, refer to Configure a Python interpreter .

For now, let's keep the default Project venv option.

Click Create when you are ready.

If you’ve already got a project open, after clicking Create PyCharm will ask you whether to open a new project in the current window or in a new one. Choose Open in current window - this will close the current project, but you'll be able to reopen it later.

For more information, refer to Open, reopen, and close projects .

Create a Python file

In the Project tool window, select the project root (typically, it is the root node in the project tree), right-click it, and select File | New ... .

Create a Python file

Select the option Python File from the context menu, and then type the new filename.

Creating a new Python file

PyCharm creates a new Python file and opens it for editing.

New Python file

Edit Python code

Let's start editing the Python file you've just created.

Start with declaring a class. Immediately as you start typing, PyCharm suggests how to complete your line:

Create class completion

Choose the keyword class and type the class name, Car .

PyCharm informs you that there are errors in your file:

Create class analysis

Note that PyCharm analyzes your code on-the-fly, the results are immediately shown in the inspection indicator in the upper-right corner of the editor.

This inspection indication works like a traffic light: when it is green, everything is OK, and you can go on with your code; a yellow light means some minor problems that however will not affect compilation; but when the light is red, it means that you have some serious errors.

Click it to preview the details in the Problems tool window. There's a missing colon, then an indentation is expected:

View code problems

Let's continue by creating the __init__ function for the class: when you start typing the function's name, PyCharm suggests pasting the entire code construct including the mandatory self parameter, the closing parenthesis, and the colon:

Create class

If you notice any inspection warnings as you're editing your code, click the bulb symbol to preview the list of possible fixes and recommended actions:

Intention actions

Let's copy and paste the entire code sample. Hover over the upper-right corner of the code block below, click the copy icon, and then paste the code into the PyCharm editor replacing the content of the Car.py file:

At this point, you're ready to run your first Python application in PyCharm.

Run your application

Use either of the following ways to run your code:

Right-click the editor and select Run 'Car' from the context menu .

Press Control+Shift+F10 .

You'll see the popup menu of the available commands. Choose Run 'Car' :

Run command

PyCharm executes your code in the Run tool window .

Run Tool window

Here you can enter the expected values and preview the script output.

Note that PyCharm has created a temporary run/debug configuration for the Car file.

Temporary run/debug configuration

The run/debug configuration defines the way PyCharm executes your code. You can save it to make it a permanent configuration or modify its parameters. For more information about running Python code, refer to Run/debug configurations .

Congratulations on completing your first script in PyCharm! Let's repeat what you've done with the help of PyCharm:

Created a project.

Created a file in the project.

Created the source code.

Ran this source code.

In the next step, learn how to debug your programs in PyCharm .

  • qmake Manual

Creating Project Files

Getting Started with qmake Building Common Project Types

Project files contain all the information required by qmake to build your application, library, or plugin. Generally, you use a series of declarations to specify the resources in the project, but support for simple programming constructs enables you to describe different build processes for different platforms and environments.

Project File Elements

The project file format used by qmake can be used to support both simple and fairly complex build systems. Simple project files use a straightforward declarative style, defining standard variables to indicate the source and header files that are used in the project. Complex projects may use control flow structures to fine-tune the build process.

The following sections describe the different types of elements used in project files.

In a project file, variables are used to hold lists of strings. In the simplest projects, these variables inform qmake about the configuration options to use, or supply filenames and paths to use in the build process.

qmake looks for certain variables in each project file, and it uses the contents of these to determine what it should write to a Makefile. For example, the lists of values in the HEADERS and SOURCES variables are used to tell qmake about header and source files in the same directory as the project file.

Variables can also be used internally to store temporary lists of values, and existing lists of values can be overwritten or extended with new values.

The following snippet illustrates how lists of values are assigned to variables:

The list of values in a variable is extended in the following way:

Note: The first assignment only includes values that are specified on the same line as the HEADERS variable. The second assignment splits the values in the SOURCES variable across lines by using a backslash (\).

The CONFIG variable is another special variable that qmake uses when generating a Makefile. It is discussed in General Configuration . In the snippet above, console is added to the list of existing values contained in CONFIG .

The following table lists some frequently used variables and describes their contents. For a full list of variables and their descriptions, see Variables .

The contents of a variable can be read by prepending the variable name with $$ . This can be used to assign the contents of one variable to another:

The $$ operator is used extensively with built-in functions that operate on strings and lists of values. For more information, see qmake Language .

Usually, whitespace separates values in variable assignments. To specify values that contain spaces, you must enclose the values in double quotes:

The quoted text is treated as a single item in the list of values held by the variable. A similar approach is used to deal with paths that contain spaces, particularly when defining the INCLUDEPATH and LIBS variables for the Windows platform:

You can add comments to project files. Comments begin with the # character and continue to the end of the same line. For example:

To include the # character in variable assignments, it is necessary to use the contents of the built-in LITERAL_HASH variable.

Built-in Functions and Control Flow

qmake provides a number of built-in functions to enable the contents of variables to be processed. The most commonly used function in simple project files is the include() function which takes a filename as an argument. The contents of the given file are included in the project file at the place where the include function is used. The include function is most commonly used to include other project files:

Support for conditional structures is made available via scopes that behave like if statements in programming languages:

The assignments inside the braces are only made if the condition is true. In this case, the win32 CONFIG option must be set. This happens automatically on Windows. The opening brace must stand on the same line as the condition.

More complex operations on variables that would usually require loops are provided by built-in functions such as find() , unique() , and count() . These functions, and many others are provided to manipulate strings and paths, support user input, and call external tools. For more information about using the functions, see qmake Language . For lists of all functions and their descriptions, see Replace Functions and Test Functions .

Project Templates

The TEMPLATE variable is used to define the type of project that will be built. If this is not declared in the project file, qmake assumes that an application should be built, and will generate an appropriate Makefile (or equivalent file) for the purpose.

The following table summarizes the types of projects available and describes the files that qmake will generate for each of them:

See Building Common Project Types for advice on writing project files for projects that use the app and lib templates.

When the subdirs template is used, qmake generates a Makefile to examine each specified subdirectory, process any project file it finds there, and run the platform's make tool on the newly-created Makefile. The SUBDIRS variable is used to contain a list of all the subdirectories to be processed.

General Configuration

The CONFIG variable specifies the options and features that the project should be configured with.

The project can be built in release mode or debug mode, or both. If debug and release are both specified, the last one takes effect. If you specify the debug_and_release option to build both the debug and release versions of a project, the Makefile that qmake generates includes a rule that builds both versions. This can be invoked in the following way:

Adding the build_all option to the CONFIG variable makes this rule the default when building the project.

Note: Each of the options specified in the CONFIG variable can also be used as a scope condition. You can test for the presence of certain configuration options by using the built-in CONFIG() function. For example, the following lines show the function as the condition in a scope to test whether only the opengl option is in use:

This enables different configurations to be defined for release and debug builds. For more information, see Using Scopes .

The following options define the type of project to be built.

Note: Some of these options only take effect when used on the relevant platform.

The application and library project templates provide you with more specialized configuration options to fine tune the build process. The options are explained in detail in Building Common Project Types .

For example, if your application uses the Qt library and you want to build it in debug mode, your project file will contain the following line:

Note: You must use "+=", not "=", or qmake will not be able to use Qt's configuration to determine the settings needed for your project.

Declaring Qt Libraries

If the CONFIG variable contains the qt value, qmake's support for Qt applications is enabled. This makes it possible to fine-tune which of the Qt modules are used by your application. This is achieved with the QT variable which can be used to declare the required extension modules. For example, we can enable the XML and network modules in the following way:

Note: QT includes the core and gui modules by default, so the above declaration adds the network and XML modules to this default list. The following assignment omits the default modules, and will lead to errors when the application's source code is being compiled:

If you want to build a project without the gui module, you need to exclude it with the "-=" operator. By default, QT contains both core and gui , so the following line will result in a minimal Qt project being built:

For a list of Qt modules that you can add to the QT variable, see QT .

Configuration Features

qmake can be set up with extra configuration features that are specified in feature (.prf) files. These extra features often provide support for custom tools that are used during the build process. To add a feature to the build process, append the feature name (the stem of the feature filename) to the CONFIG variable.

For example, qmake can configure the build process to take advantage of external libraries that are supported by pkg-config , such as the D-Bus and ogg libraries, with the following lines:

For more information about adding features, see Adding New Configuration Features .

Declaring Other Libraries

If you are using other libraries in your project in addition to those supplied with Qt, you need to specify them in your project file.

The paths that qmake searches for libraries and the specific libraries to link against can be added to the list of values in the LIBS variable. You can specify the paths to the libraries or use the Unix-style notation for specifying libraries and paths.

For example, the following lines show how a library can be specified:

The paths containing header files can also be specified in a similar way using the INCLUDEPATH variable.

For example, to add several paths to be searched for header files:

© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Walkthrough: Create an MSBuild project file from scratch

  • 11 contributors

Programming languages that target the .NET Framework use MSBuild project files to describe and control the application build process. When you use Visual Studio to create an MSBuild project file, the appropriate XML is added to the file automatically. However, you may find it helpful to understand how the XML is organized and how you can change it to control a build.

This article is appropriate if you want to learn the basic fundamentals of how MSBuild works independently of any SDK. Building with an SDK, such as when you use dotnet build or you add the Sdk attribute to the root project element, is not covered in this article. See .NET Project SDKs .

For information about creating a project file for a C++ project, see MSBuild (C++) .

This walkthrough shows how to create a basic project file incrementally, by using only a text editor. The walkthrough follows these steps:

Extend the PATH environment variable.

Create a minimal application source file.

Create a minimal MSBuild project file.

Build the application by using the project file.

Add properties to control the build.

Control the build by changing property values.

Add targets to the build.

Control the build by specifying targets.

Build incrementally.

This walkthrough shows how to build the project at the command prompt and examine the results. For more information about MSBuild and how to run MSBuild at the command prompt, see Walkthrough: Use MSBuild .

To complete the walkthrough, you must have Visual Studio installed because it includes MSBuild and the C# compiler, which are required for the walkthrough.

Extend the path

Before you can use MSBuild, you must extend the PATH environment variable to include all the required tools. You can use the Developer Command Prompt for Visual Studio . Search for it on Windows 10 in the search box in the Windows task bar. To set up the environment in an ordinary command prompt or in a scripting environment, run VSDevCmd.bat in the Common7/Tools subfolder of a Visual Studio installation.

Create a minimal application

This section shows how to create a minimal C# application source file by using a text editor.

At the command prompt, browse to the folder where you want to create the application, for example, \My Documents\ or \Desktop\ .

Create a subfolder named \HelloWorld\ and change directory to go inside it.

In a text editor, create a new file HelloWorld.cs and then copy and paste the following code:

Build the application by typing csc helloworld.cs at the command prompt.

Test the application by typing helloworld at the command prompt.

The Hello, world! message should be displayed.

Delete the executable.

Create a minimal MSBuild project file

Now that you have a minimal application source file, you can create a minimal project file to build the application. This project file contains the following elements:

The required root Project node.

An ItemGroup node to contain item elements.

An item element that refers to the application source file.

A Target node to contain tasks that are required to build the application.

A Task element to start the C# compiler to build the application.

To create a minimal MSBuild project file

In the text editor, create a new file HelloWorld.csproj and enter the following code:

This ItemGroup contains an item element Compile and specifies one source file as an item.

Add a Target node as a child element of the Project node. Name the node Build .

Insert this task element as a child element of the Target node:

Save this project file and name it Helloworld.csproj .

Your minimal project file should resemble the following code:

Tasks in the Build target are executed sequentially. In this case, the C# compiler Csc task is the only task. It expects a list of source files to compile, and this is given by the value of the Compile item. The Compile item references just one source file, Helloworld.cs .

In the item element, you can use the asterisk wildcard character (*) to reference all files that have the .cs file name extension, as follows:

Build the application

Now, to build the application, use the project file that you just created.

At the command prompt, type msbuild helloworld.csproj -t:Build .

This builds the Build target of the Helloworld project file by invoking the C# compiler to create the Helloworld application.

Test the application by typing helloworld .

You can see more details about the build by increasing the verbosity level. To set the verbosity level to "detailed", type this command at the command prompt:

msbuild helloworld.csproj -t:Build -verbosity:detailed

Add build properties

You can add build properties to the project file to further control the build. Now add these properties:

An AssemblyName property to specify the name of the application.

An OutputPath property to specify a folder to contain the application.

To add build properties

Delete the existing application executable (later, you'll add a Clean target to handle the deletion of old output files).

In the project file, insert this PropertyGroup element just after the opening Project element:

Add this task to the Build target, just before the Csc task:

The MakeDir task creates a folder that is named by the OutputPath property, provided that no folder by that name currently exists.

Add this OutputAssembly attribute to the Csc task:

This instructs the C# compiler to produce an assembly that is named by the AssemblyName property and to put it in the folder that is named by the OutputPath property.

Save your changes.

Your project file should now resemble the following code:

We recommend that you add the backslash (\) path delimiter at the end of the folder name when you specify it in the OutputPath element, instead of adding it in the OutputAssembly attribute of the Csc task. Therefore,


OutputAssembly="$(OutputPath)$(AssemblyName).exe" />

is better than


OutputAssembly="$(OutputPath)\$(AssemblyName).exe" />

Test the build properties

Now you can build the application by using the project file in which you used build properties to specify the output folder and application name.

This creates the \Bin\ folder and then invokes the C# compiler to create the MSBuildSample application and puts it in the \Bin\ folder.

To verify that the \Bin\ folder has been created, and that it contains the MSBuildSample application, type dir Bin .

Test the application by typing Bin\MSBuildSample to run the executable.

Add build targets

Next, add two more targets to the project file, as follows:

A Clean target that deletes old files.

A Rebuild target that uses the DependsOnTargets attribute to force the Clean task to run before the Build task.

Now that you have multiple targets, you can set the Build target as the default target.

To add build targets

In the project file, add these two targets just after the Build target:

The Clean target invokes the Delete task to delete the application. The Rebuild target does not run until both the Clean target and the Build target have run. Although the Rebuild target has no tasks, it causes the Clean target to run before the Build target.

Add this DefaultTargets attribute to the opening Project element:

This sets the Build target as the default target.

Test the build targets

You can exercise the new build targets to test these features of the project file:

Building the default build.

Setting the application name at the command prompt.

Deleting the application before another application is built.

Deleting the application without building another application.

To test the build targets

At the command prompt, type msbuild helloworld.csproj -p:AssemblyName=Greetings .

Because you did not use the -t switch to explicitly set the target, MSBuild runs the default Build target. The -p switch overrides the AssemblyName property and gives it the new value, Greetings . This causes a new application, Greetings.exe , to be created in the \Bin\ folder.

To verify that the \Bin\ folder contains both the MSBuildSample application and the new Greetings application, type dir Bin .

Test the Greetings application (for example, by typing Bin\Greetings on Windows).

Delete the MSBuildSample application by typing msbuild helloworld.csproj -t:clean .

This runs the Clean task to remove the application that has the default AssemblyName property value, MSBuildSample .

Delete the Greetings application by typing msbuild helloworld.csproj -t:clean -p:AssemblyName=Greetings .

This runs the Clean task to remove the application that has the given AssemblyName property value, Greetings .

To verify that the \Bin\ folder is now empty, type dir Bin .

Type msbuild .

Although a project file is not specified, MSBuild builds the helloworld.csproj file because there is only one project file in the current folder. This causes the MSBuildSample application to be created in the \Bin\ folder.

To verify that the \Bin\ folder contains the MSBuildSample application, type dir Bin .

Build incrementally

You can tell MSBuild to build a target only if the source files or target files that the target depends on have changed. MSBuild uses the time stamp of a file to determine whether it has changed.

To build incrementally

In the project file, add these attributes to the opening Build target:

This specifies that the Build target depends on the input files that are specified in the Compile item group, and that the output target is the application file.

The resulting Build target should resemble the following code:

Test the Build target by typing msbuild -v:d at the command prompt.

Remember that helloworld.csproj is the default project file, and that Build is the default target.

The -v:d switch is an abbreviation of -verbosity:detailed that you used previously.

If you already built the output, these lines should be displayed:

Skipping target "Build" because all output files are up-to-date with respect to the input files.

MSBuild skips the Build target because none of the source files have changed since the application was last built.

The following example shows a project file that compiles a C# application and logs a message that contains the output file name.

Visual Basic example

The following example shows a project file that compiles a Visual Basic application and logs a message that contains the output file name.

What's next?

Visual Studio can automatically do much of the work that is shown in this walkthrough. To learn how to use Visual Studio to create, edit, build, and test MSBuild project files, see Walkthrough: Use MSBuild .

Related content

  • MSBuild overview
  • MSBuild reference

Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback .

Submit and view feedback for

Additional resources

  • PRO Courses Guides New Tech Help Pro Expert Videos About wikiHow Pro Upgrade Sign In
  • EDIT Edit this Article
  • EXPLORE Tech Help Pro About Us Random Article Quizzes Request a New Article Community Dashboard This Or That Game Popular Categories Arts and Entertainment Artwork Books Movies Computers and Electronics Computers Phone Skills Technology Hacks Health Men's Health Mental Health Women's Health Relationships Dating Love Relationship Issues Hobbies and Crafts Crafts Drawing Games Education & Communication Communication Skills Personal Development Studying Personal Care and Style Fashion Hair Care Personal Hygiene Youth Personal Care School Stuff Dating All Categories Arts and Entertainment Finance and Business Home and Garden Relationship Quizzes Cars & Other Vehicles Food and Entertaining Personal Care and Style Sports and Fitness Computers and Electronics Health Pets and Animals Travel Education & Communication Hobbies and Crafts Philosophy and Religion Work World Family Life Holidays and Traditions Relationships Youth
  • Browse Articles
  • Learn Something New
  • Quizzes Hot
  • This Or That Game New
  • Train Your Brain
  • Explore More
  • Support wikiHow
  • About wikiHow
  • Log in / Sign up
  • Education and Communications

How to Decorate a Project File

Last Updated: February 9, 2023 Fact Checked

This article was co-authored by wikiHow staff writer, Sophia Latorre . Sophia Latorre is a Content Manager on the wikiHow team. Before joining wikiHow, Sophia worked as a technical editor and was published in six International Energy Agency (IEA) Wind Annual Reports. Now, she writes, edits, and reviews articles for the wikiHow Content Team, working to make the content as helpful as possible for readers worldwide. Sophia holds a BA in English from Colorado State University. This article has been fact-checked, ensuring the accuracy of any cited facts and confirming the authority of its sources. This article has been viewed 101,844 times. Learn more...

If you have to turn in a project file at school, you may be wondering how to decorate the cover. Don’t worry, there are lots of ideas and techniques you can use to create a personalized file, no matter what kind of project it is.

Things You Should Know

  • Make sure your project file matches the theme of the project and class subject.
  • Try designing an outdoor scene for a nature-themed project, using geometric shapes for a math project, or creating a map for a geography project.
  • You can use ribbon, stencils , stickers, and glitter to decorate your project file.

Coming up with Ideas and a Layout

Step 1 Review the project guidelines.

  • For instance, your teacher may not allow clipart or printed images on the file.

Step 2 Match the project file to the theme of the project.

  • For instance, if your project is about marine life, you could make the project file blue and decorate it with pictures of coral and fish.
  • Alternatively, if your project is about a specific book, you could draw pictures of the characters or sketch a scene from the story.

Step 3 Outline your ideas before you begin decorating.

  • You can use a ruler to figure out how much space you’ll use for each element as well as to help you center text or pictures.
  • You don’t need to add tons of details; simply map out a quick sketch with text boxes, stick figures, and the like.

Step 4 Don’t make the project file too busy.

  • Aim to leave at least a quarter of the page blank.
  • If you decide to add text or a title, leave room around it so it’s easy to read.

Step 5 Keep your work as neat as possible.

Designing the File by Subject

Step 1 Make an outdoor scene for nature-themed projects.

  • For instance, if you’re depicting a bug’s habitat, use a green marker to draw grass of varying lengths “growing” up from the bottom of the page. Add layers of dirt in addition to worms, insects, and plants to fill out the project file.

Step 2 Include lots of images for an art project.

  • Alternatively, you could create a border using the number sequence for Pi.

Step 4 Cover the file in letters, symbols, or characters for an English project.

  • If you want to add symbols, choose ones that are central to the story, such as an albatross and ship for “Rime of the Ancient Mariner” by Samuel Taylor Coleridge.
  • If you use letters to decorate the file, be sure to vary the order and use every letter of the alphabet. Use a variety of colors to make the cover more interesting. [3] X Research source

Step 5 Create a map...

Adding Decorations

Step 1 Cover the front of the file with a new sheet of paper, if necessary.

  • You can use white school glue, a glue stick, or rubber cement.

Step 2 Add washi tape or ribbon to make a border.

  • Cut the ribbon or tape into four pieces—two that match the length of the file and two that match the width of it.
  • Stick the washi tape to the edges of each side, or use glue dots to attach the ribbon.

Step 3 Draw the border by hand if you prefer.

  • Ideas for the border design include swirls, shapes, letters, and flowers.

Step 4 Use stencils or stickers to add text for a professional look.

  • You could also print out the text on a separate sheet of paper, cut it out, and glue it to the file.
  • Alternatively, if you have nice handwriting , you can write the title or text by hand. You may want to use bubble letters or another technique to make the text stand out.

Step 5 Include pictures that reflect the theme of the project.

  • For instance, if you are doing the project for a chemistry class, add pictures of test tubes and beakers.

Step 6 Add extra detail with cutouts.

  • For example, if your project file is decorated with a tree, cut leaves or flowers out of construction paper and glue them to the branches.

Step 7 Make the file stand out by using glitter or shiny paper.

  • You could also cut out a piece of shiny paper that’s smaller than the project file by about 3 inches (7.6 cm) on each side. Glue it to the center of the file to make it stand out from the background.

Expert Q&A

Things you’ll need.

  • Construction or scrapbook paper
  • White school glue, glue dots, a glue stick, or rubber cement
  • Ribbon or washi tape
  • Pencils, pens, or markers
  • Stickers or stencils

You Might Also Like

Find Information on People

  • ↑ https://www.ganjing.com/video/1fb58rubb8g6blSDaDX65b7Nk1bq1c
  • ↑ https://youtu.be/z-BkrmjcYQ4?t=24
  • ↑ https://youtu.be/z-BkrmjcYQ4?t=164
  • ↑ https://youtu.be/NO-YDYU4nTc?t=21
  • ↑ https://sciencing.com/decorate-school-project-6197195.html
  • ↑ https://youtu.be/1x55CkeIVqk?t=204

About This Article

Sophia Latorre

Before you decorate a project file, take some time to outline your ideas so you don’t make mistakes. Pick a design or theme that matches the project, such as a nature scene for an environmental project. Add a border around the edge if you want, either in a solid color or a fun design. Use letter stickers or stencils to add the title of the project or other text to the file. Add extra detail with cutouts or pictures, and you’re done! If you want to learn how to pick your decorations based on the subject of the project, keep reading! Did this summary help you? Yes No

  • Send fan mail to authors

Did this article help you?

Am I a Narcissist or an Empath Quiz

Featured Articles

Learn to Say No

Trending Articles

How to Take the Perfect Thirst Trap

Watch Articles

Wrap a Round Gift

  • Terms of Use
  • Privacy Policy
  • Do Not Sell or Share My Info
  • Not Selling Info

Don’t miss out! Sign up for

wikiHow’s newsletter

  • PC & Mobile

VS Code How to Create a New Project

how to make an project file

Lee Stanton Lee Stanton is a versatile writer with a concentration on the software landscape, covering both mobile and desktop applications as well as online technologies. Read more January 20, 2021

Ever since its introduction in 2015, Visual Studio Code has soared in popularity as one of the best lightweight programming languages and code editors. With a range of features that support a multitude of different languages, and a vast library of extensions to improve upon the base text-editing functionalities, it’s easy to see why VS Code is a favorite for many programmers and hobbyists alike.

VS Code How to Create a New Project

However, some users who have grown accustomed to Integrated Development Environments (IDEs) might have a few problems setting up VS Code to their liking. We’re here to help and to explain how to use VS Code to create and manage new projects.

How to Create a New Project in VS Code

VS Code doesn’t use the usual “File > New Project” dialog method, which IDEs commonly use to start developing new projects. The basic design of VS Code is that of a text editor, which uses your file system to browse for existing files to edit and compile. As such, it is not able to provide adequate scaffolding for new projects on its own.

However, there is a way to make new projects in VS Code. You’ll need to download the appropriate extension from VS Code’s Marketplace . An extension will have a list of its additional features, but you need to locate the one which contains a proper debugger and a scaffolder to suit your specific programming interests. Different programming languages and projects will require separate extensions to provide a full range of functionality, from making projects to debugging the code.

How to Create a New C# Project in VS Code

To make a new C# project (.NET application), you first need the adequate requirements to set up scaffolding for the project, and then use VS Code to make the new folders for it. Here’s what you need to do:

how to make an project file

That’s all there is to it. With a C# extension, you can make new folders and create new projects in them through the command prompt.

How to Create a New C++ Project in VS Code

Similar to C#, VS Code has a dedicated extension for C and C++. Here’s what you need to do to create a new C++ project:

how to make an project file

  • If you have Visual Studio (not VS Code), then you already have a C++ compiler and debugger on your machine. Otherwise, you’ll need a dedicated C++ compiler. A popular example is MinGW for Windows or use macOS’ Clang with an extension .

how to make an project file

  • The official C++ extension has more functionalities, such as breakpoint debugging, but Code Runner works better and is compatible with a wider array of languages.

How to Create a New Python Project in VS Code

Python is one of the more popular programming languages, and VS Code has extensions that make programming in Python easy. Here’s what you need to do:

how to make an project file

  • Edit your source code as needed, and save the result.

how to make an project file

How to Create a New Project from Git in VS Code

GitHub is one of the most popular ways to share and work on your code. While it may seem daunting, VS Code allows for a seamless Git integration and easy access to your code. Follow these steps:

how to make an project file

  • You’ll get a confirmation prompt to clone the Git onto VS Code.

how to make an project file

  • Save the changes.

how to make an project file

  • To commit your VS Code folder to GitHub, use the Checkmark icon to commit your changes to the master branch. You can put a comment to let users know of the differences between the previous and current commit versions.

how to make an project file

You are now ready to start coding in VS Code and commit changes to GitHub.

Additional FAQ

How do i open visual studio code.

VS Code is a lightweight application that uses about 200MB of memory when installed. Once you’ve installed VS Code from Microsoft’s website and followed all the installation instructions, open the application by double-clicking the resulting icon or shortcut.

Is VS Code an IDE?

Visual Studio Code is not classified as an IDE due to a lack of a dedicated debugger and compiler for a specific programming language. Visual Studio, on the other hand, is an IDE that supports a vast range of languages but is much more robust. Visual Studio Code is aptly referenced as a text editor. Although VS Code can gain capabilities through extensions, it can’t be considered a true IDE by these standards.

How Do I Create a New Branch in VS Code?

To create a new branch for Git projects, follow these steps:

• Click on the branch icon in the bottom left corner.

• Once the new branch is made, you need to save it.

• Switch over to the control window (Ctrl+Shift+G).

• Click on the ellipsis icon and press “Publish Branch.”

• This will publish the newly created branch on GitHub.

Make Projects Easy with VS Code

Visual Studio Code is one of the simplest solutions for reading and editing code in various programming languages. While it lacks the robust features of IDEs, its range of functions provided through extensions allows you to create and manage new projects quickly. With an intuitive UI and a lightweight design, it truly shines as one of the most popular text editors for programmers everywhere.

What projects are you doing in VS Code? Do you need a full IDE to finish your work? Let us know in the comments section below.

Related Posts

how to make an project file

Disclaimer: Some pages on this site may include an affiliate link. This does not effect our editorial in any way.

How to Disable Pop-Up Blocker

Lee Stanton February 19, 2024

Deleting alternatie Excel rows

Lee Stanton February 10, 2024

how to make an project file

Lee Stanton February 5, 2024

Send To Someone

Missing device.

Please enable JavaScript to submit this form.

how to make an project file

Lee Stanton April 1, 2023

How to See Google Search History

Steve Larner March 7, 2023

how to make an project file

Lee Stanton August 23, 2022

how to make an project file

Lee Stanton August 16, 2022

how to download photos from google photos

Cassandra McBride December 3, 2022

how to make an project file

Lee Stanton February 20, 2023

Cookies: We use our own and third-party cookies to improve your experience of our website. Cookies remember your preferences and track site usage. By continuing, you accept their use.

Logo: Literature and Latte

Typewriter. Ring-binder. Scrapbook. Everything you need to craft your first draft.

Get your thoughts onto the page and explore the connections between them.

Join the conversation. Ask a question or just get to know your fellow users.

What we’re working on, interviews with users, and general prolixity.

How to Create a Scrivener Project to Use As Your Second Brain

Kirk McElhearn  /  21 FEB 2024

You can create a Scrivener project to use a second brain, a repository of information that you can search easily.

In addition to being a powerful, flexible tool for writing long-form documents, Scrivener is a great app for storing information. The dedicated Research folder in the Binder of Scrivener projects is designed for writers who want to have research materials and other information handy when working on a project.

You're not limited to storing additional content in the Research folder; you can store information and files in other folders as well. You can even create a Scrivener project to store all sorts of information and to serve as your second brain . Here's how to use Scrivener to store all types of information, and access it quickly.

What's a second brain?

You deal with emails, texts, and articles every day, and you attend meetings and seminars, and take classes. Your brain is constantly digesting new information, but forgetting most of it. If you can store much of that information in a single repository, so you can search for it when you need it, you won’t have to try to remember things you don't need to know often.

The idea of the second brain was developed by Tiago Forte , as a "method to organize your digital life and unlock your creative potential." The principle was to create "an external, centralized, digital repository for the things you learn," because "Our brains [...] can only store a few thoughts at any one time. Fundamentally, our brains are for having ideas, not storing them."

This sort of data repository has been around for a long time; many productivity books have been written explaining different methods of dealing with this glut of information, and hundreds of productivity apps offer ways to store information. But if you're a Scrivener user, why not create a Scrivener project as your second brain?

Creating a second brain Scrivener project

If you've used Scrivener, you're familiar with the Binder, the sidebar at the left of the app's window which you populate with files and folders . When writing a book, you may set up folders for chapters and use files for scenes. When creating a second brain project, you can use the folders for anything you want: notes, emails, ideas, PDFs, links, photos, videos, and more. By default, Scrivener suggests that you use the Research folder to store all these items so they don't get in the way of your project, but there's no reason why you couldn't use any folder in the Binder to store information. (One exception is media files; see below.)

Once you've created the project, you can start adding content to it as you find things you want to restore. Much of the content you'll add will be text you've copied from the web, from articles, emails, or documents. For this type of text, you can create new files in any folder in the Binder, or you could just paste the text at the end of one larger file, which may contain a specific type of content, such as emails, articles, or reviews.

Importing content into Scrivener projects

In addition to manually pasting text into your project, Scrivener lets you import a number of file types:

  • RTF, or rich text documents
  • RTFD, a proprietary Apple rich text format
  • DOC and DOCX word files
  • ODT, Open Document Text documents
  • TXT, plain text documents
  • Final Draft files
  • Fountain plain text files
  • OPML, Outline Processor Markup Language Files
  • Files with no extension

For many of these file types, you can just drag them to a folder in the Binder. Exceptions are PDF files and media files, such as audio and video files, which can only reside in the Research folder. However, you can make sub-folders in the Research folder for each of these types of files.

Scrivener has a built-in PDF viewer, with controls in the window footer that make it easy to flip through pages in these documents. See Chapter 8.1.3 of the Scrivener manual for more on viewing PDFs and other media files.

how to make an project file

Tip: if you create a folder to store PDFs, you can switch to Corkboard view when examining that folder to see all the PDFs as index cards.

You can import web pages to your Scrivener project, and you can view them the way they appear on the web. This is another type of content that cannot be stored in the Binder. To import a web page, choose File > Import > Web Pages, then paste the URL in the dialog.

how to make an project file

When you import web pages, Scrivener stores them as they are at the time of the import; these are not live web pages, but you can click the link that displays in the footer at the bottom of the window to access a current version of that page. Note that Scrivener can't import web pages that require you to log into an account, such as Google Docs. But you can copy the text from that type of document and then paste it into a file in your Binder.

Scrivener can convert web pages and PDFs to text documents, so you can edit their text if you want. Select a document and choose Documents > Convert > Web Page to Text or PDF File to Text. If you always want Scrivener to convert web pages when you import them, go to Settings / Options > Sharing. On the Import tab, enable Convert imported WebArchives and web pages to text. Note that you will lose much of the formatting when you convert these files.

Accessing your second brain in Scrivener

It's one thing to store a lot of information in a Scrivener project, but you need to also be able to access that information. Scrivener's powerful find feature lets you search your entire project, and even search text in PDFs (if the PDF files aren’t just scans of documents). You can also create search collections to return to specific searches with just a couple of clicks.

You can also view multiple items at the same time, by splitting the Scrivener Editor ; this way, you can view two or more files at the same time to gather information or compare them.

how to make an project file

While it may seem complex to set up a second brain Scrivener project, don’t forget that it’s just a repository and that you’re not meant to remember everything you add. As you build your second brain, you’ll get used to searching this project for something that you recall having added, but without remembering its specifics. The whole point of a second brain is to allow you to forget details and call them up when you need them.

Kirk McElhearn is a writer , podcaster , and photographer . He is the author of Take Control of Scrivener , and host of the podcast Write Now with Scrivener .

Two Ways of Creating a Timeline for Your Scrivener Project

You may also like to read..., use folders and texts to power up the scrivener binder.

Take a look at how to get the most out of folders and text documents when organising your projects.

Use Scrivener's Research Folder to Store Information About Your Project

Scrivener's Research folder lets you collate material about your project and access it quickly.

How to Use Scrivener's Collections to Access Groups of Files or Search Results Quickly

Scrivener's Collections are a powerful feature that leverage the Binder and project search to help you manage your projects.

Keep up to date

Sign up for the latest news, writing tips and product announcements. Delivered straight to your inbox.

  • Newsletters

Google’s Gemini is now in everything. Here’s how you can try it out.

Gmail, Docs, and more will now come with Gemini baked in. But Europeans will have to wait before they can download the app.

  • Will Douglas Heaven archive page

In the biggest mass-market AI launch yet, Google is rolling out Gemini , its family of large language models, across almost all its products, from Android to the iOS Google app to Gmail to Docs and more. You can also now get your hands on Gemini Ultra, the most powerful version of the model, for the first time.  

With this launch, Google is sunsetting Bard , the company's answer to ChatGPT. Bard, which has been powered by a version of Gemini since December, will now be known as Gemini too.  

ChatGPT , released by Microsoft-backed OpenAI just 14 months ago, changed people’s expectations of what computers could do. Google, which has been racing to catch up ever since, unveiled its Gemini family of models in December. They are multimodal large language models that can interact with you via voice, image, and text. Google claimed that its own benchmarking showed that Gemini could outperform OpenAI's multimodal model, GPT-4, on a range of standard tests. But the margins were slim. 

By baking Gemini into its ubiquitous products, Google is hoping to make up lost ground. “Every launch is big, but this one is the biggest yet,” Sissie Hsiao, Google vice president and general manager of Google Assistant and Bard (now Gemini), said in a press conference yesterday. “We think this is one of the most profound ways that we’re going to advance our company’s mission.”

But some will have to wait longer than others to play with Google’s new toys. The company has announced rollouts in the US and East Asia but said nothing about when the Android and iOS apps will come to the UK or the rest of Europe. This may be because the company is waiting for the EU’s new AI Act to be set in stone, says Dragoș Tudorache, a Romanian politician and member of the European Parliament, who was a key negotiator on the law.

“We’re working with local regulators to make sure that we’re abiding by local regime requirements before we can expand,” Hsiao said. “Rest assured, we are absolutely working on it and I hope we’ll be able to announce expansion very, very soon.”

How can you get it? Gemini Pro, Google’s middle-tier model that has been available via Bard since December, will continue to be available for free on the web at gemini.google.com (rather than bard.google.com). But now there is a mobile app as well.

If you have an Android device, you can either download the Gemini app or opt in to an upgrade in Google Assistant. This will let you call up Gemini in the same way that you use Google Assistant: by pressing the power button, swiping from the corner of the screen, or saying “Hey, Google!” iOS users can download the Google app, which will now include Gemini.

Gemini will pop up as an overlay on your screen, where you can ask it questions or give it instructions about whatever’s on your phone at the time, such as summarizing an article or generating a caption for a photo.  

Finally, Google is launching a paid-for service called Gemini Advanced. This comes bundled in a subscription costing $19.99 a month that the company is calling the Google One Premium AI Plan. It combines the perks of the existing Google One Premium Plan, such as 2TB of extra storage, with access to Google's most powerful model, Gemini Ultra, for the first time. This will compete with OpenAI’s paid-for service, ChatGPT Plus, which buys you access to the more powerful GPT-4 (rather than the default GPT-3.5) for $20 a month.

At some point soon (Google didn't say exactly when) this subscription will also unlock Gemini across Google’s Workspace apps like Docs, Sheets, and Slides, where it works as a smart assistant similar to the GPT-4-powered Copilot that Microsoft is trialing in Office 365.

When can you get it? The free Gemini app (powered by Gemini Pro) is available from today in English in the US. Starting next week, you’ll be able to access it across the Asia Pacific region in English and in Japanese and Korean. But there is no word on when the app will come to the UK, countries in the EU, or Switzerland.

Gemini Advanced (the paid-for service that gives access to Gemini Ultra) is available in English in more than 150 countries, including the UK and EU (but not France). Google says it is analyzing local requirements and fine-tuning Gemini for cultural nuance in different countries. But the company promises that more languages and regions are coming.

What can you do with it? Google says it has developed its Gemini products with the help of more than 100 testers and power users. At the press conference yesterday, Google execs outlined a handful of use cases, such as getting Gemini to help write a cover letter for a job application. “This can help you come across as more professional and increase your relevance to recruiters,” said Google’s vice president for product management, Kristina Behr.

Or you could take a picture of your flat tire and ask Gemini how to fix it. A more elaborate example involved Gemini managing a snack rota for the parents of kids on a soccer team. Gemini would come up with a schedule for who should bring snacks and when, help you email other parents, and then field their replies. In future versions, Gemini will be able to draw on data in your Google Drive that could help manage carpooling around game schedules, Behr said.   

But we should expect people to come up with a lot more uses themselves. “I’m really excited to see how people around the world are going to push the envelope on this AI,” Hsaio said.

Is it safe? Google has been working hard to make sure its products are safe to use. But no amount of testing can anticipate all the ways that tech will get used and misused once it is released. In the last few months, Meta saw people use its image-making app to produce pictures of Mickey Mouse with guns and SpongeBob SquarePants flying a jet into two towers. Others used Microsoft’s image-making software to create fake pornographic images of Taylor Swift .

The AI Act aims to mitigate some—but not all—of these problems. For example, it requires the makers of powerful AI like Gemini to build in safeguards, such as watermarking for generated images and steps to avoid reproducing copyrighted material. Google says that all images generated by its products will include its SynthID watermarks. 

Like most companies, Google was knocked onto the back foot when ChatGPT arrived. Microsoft’s partnership with OpenAI has given it a boost over its old rival. But with Gemini, Google has come back strong: this is the slickest packaging of this generation’s tech yet. 

Artificial intelligence

Ai for everything: 10 breakthrough technologies 2024.

Generative AI tools like ChatGPT reached mass adoption in record time, and reset the course of an entire industry.

What’s next for AI in 2024

Our writers look at the four hot trends to watch out for this year

  • Melissa Heikkilä archive page

OpenAI teases an amazing new generative video model called Sora

The firm is sharing Sora with a small group of safety testers but the rest of us will have to wait to learn more.

Deploying high-performance, energy-efficient AI

Investments into downsized infrastructure can help enterprises reap the benefits of AI while mitigating energy consumption, says corporate VP and GM of data center platform engineering and architecture at Intel, Zane Ball.

  • MIT Technology Review Insights archive page

Stay connected

Get the latest updates from mit technology review.

Discover special offers, top stories, upcoming events, and more.

Thank you for submitting your email!

It looks like something went wrong.

We’re having trouble saving your preferences. Try refreshing this page and updating them one more time. If you continue to get this message, reach out to us at [email protected] with a list of newsletters you’d like to receive.

Advisory boards aren’t only for executives. Join the LogRocket Content Advisory Board today →

LogRocket blog logo

  • Product Management
  • Solve User-Reported Issues
  • Find Issues Faster
  • Optimize Conversion and Adoption
  • Start Monitoring for Free

How to build a component library with React and TypeScript

how to make an project file

React has become a top choice for building web applications. It enables us to easily build reusable UI components. Meanwhile, TypeScript, a statically typed superset of JavaScript, brings type safety, enhancing both code quality and developer productivity.

How To Build A Component Library With React And TypeScript

Component libraries are collections of pre-built, reusable, self-contained UI elements. These elements, often called components, encapsulate specific functionalities, making it easy to reuse them across different parts of an application or in multiple projects. This saves time and lets you avoid writing the same code over and over. In large project teams, component libraries provide a shared foundation so developers can work on different parts of a project simultaneously, knowing that they are using the same set of components.

By building component libraries with React and TypeScript together, we’re not only making our development more efficient with reusable components, but we’re also avoiding some common mistakes that can happen in other languages without strong typing. This combination lets us create a library that’s flexible, scalable, and trustworthy.

In this blog, we’ll delve into creating a React component library to make our React project maintainable and type-safe. We will walk through creating components, leveraging TypeScript for enhanced type safety, integrating Storybook for component visualization, and testing strategies that ensure our library stays reliable over time.

Setting up the development environment

Before we start, let’s ensure our development environment is set up for success. Here are the prerequisites:

  • Node.js and npm: Download and install the latest Node LTS version on the local machine from nodejs.org . After installation, run the following command to check the Node and npm versions: node -v npm -v
  • Code editor: Choose a code editor of your preference. For this tutorial, we’ll assume you’re using Visual Studio Code

Initializing a React project with TypeScript

We can use create-react-app with the TypeScript template to initiate a new React project. create-react-app is a command-line tool that sets up a new React application with a predefined project structure and build configurations.

Open a terminal and run the following command to create a new React app with the TypeScript template:

The above command initializes a new React application by creating a new project structure, setting up essential configurations, and installing dependencies for a smooth development experience.

Building the component library

When designing the architecture of our component library, it is essential to consider these best practices:

  • Single responsibility principle (SRP) : Each component should have a single responsibility. Avoid creating monolithic components that handle too many tasks. This principle promotes reusability and makes components easier to understand and maintain
  • Separation of concerns : Separation of concerns is the principle of dividing a program into distinct sections, each addressing a specific functionality aspect. When designing a component library, we should consider separate concerns such as logic, styling, and presentation

Directory structure

Following the above design practices, we will use a nested folder structure for better organization. As shown below, we group different components into different directories. In each component directory, we use separate files for the component’s logic, styling, and testing concerns:

Component library naming conventions

We adopt consistent naming conventions for our component library. The key is to choose clear and descriptive names that reflect the component’s purpose. Below are some guidelines to follow:

  • Use PascalCase : Adopt PascalCase for naming our component class and file names. This convention capitalizes the first letter of each word, and there are no spaces or underscores
  • Prefix for uniqueness : We will add a prefix to the component names to ensure uniqueness, especially if the library might be used in projects alongside other libraries
  • Prefer full words : We will use full words instead of acronyms to avoid ambiguous meanings

Creating a new component library

Now, let’s create our first component library: smart-ui . We will also add a new SmartRating component in the library.

In the previous section, we used create-react-app to create a skeleton of a React application. It is a good starter for a regular React app, but many of the artifacts are not necessary for a React component library.

We can clean the previously generated project assets or create a new component library from scratch. In the article, we will start from scratch.

Create the skeleton of the component library

Firstly, we create a new folder and a package.json file by running the following command:

Running the npm init command will prompt you to answer several questions. Accept the default for all questions and a basic package.json will be generated.

Next, we run the following command to install the dependencies for React and TypeScript:

After the command is completed, these dependencies are added to the package.json file.

how to make an project file

Over 200k developers use LogRocket to create better digital experiences

how to make an project file

To configure the TypeScript options, we need to create a tsconfig.json file. We can initialize it with the following command from the project’s root directory:

The newly generated tsconfig.json file contains a set of default options for TypeScript. We will need to replace the file contents with the following settings:

Some important settings are:

  • "target": "es5": Specifies that the TypeScript compiler will generate code compatible with ECMAScript 5
  • "lib": ["dom", "dom.iterable", "esnext"] : Includes necessary libraries, such as the Document Object Model (DOM)
  • "skipLibCheck": true : Skips type checking of declaration files (.d.ts), potentially speeding up compilation in large projects with numerous external dependencies
  • "module": "esnext" : Indicates that the module system for code compiling is ES6 and above
  • "jsx": "react-jsx" : Specifies the syntax for JSX (React’s JavaScript XML). "react-jsx" indicates that TypeScript should use React’s JSX syntax
  • "Include": ["src"] : Specifies that TypeScript should include files from the src  directory

Now, we can create the project skeleton by adding the following folders:

Create a SmartRating component

After the folder structure is created, we can add the files for the new SmartRating component:

  • SmartRating.tsx
  • SmartRating.css
  • SmartRating.types.ts

In SmartRating.types.ts , we declare a TypeScript interface named SmartRatingProps representing the properties accepted by the component:

SmartRating.css includes the styles for the component:

SmartRating.tsx is the SmartRating component file. Here are its contents:

The above code defines a React component called SmartRating that takes properties specified in SmartRatingProps . It renders a star rating UI, allowing users to click on stars to set a rating. The component structure includes a title , a disabled state, and a theme specified by the SmartRatingProps .

Add index.ts

Next, we need to create the index.ts files. The index.ts file consolidates exports, providing a centralized entry point for the component library. It also simplifies imports for the consumer.

We create an index.ts file at each level of folders to make the library export easier. For instance, in components/index.ts , we can add a new export to index.ts when a new component is added, without needing to change src/index.ts :

The project structure looks like the one below:

Project Structure

Rollup for bundling and packaging

We’ll use Rollup to simplify the process of bundling and packaging our React component library. Rollup is a JavaScript module bundler that packages and optimizes code for production.

Rollup is particularly good at tree-shaking to remove unused code, making it well-suited for libraries where minimizing the bundle size is critical. It also offers flexibility in generating different output formats (CommonJS, ES module, UMD, etc.), allowing library authors to cater to various project setups and environments.

To enhance functionality, Rollup uses plugins to handle tasks like transpilation, minification, and resolving external dependencies. We need to install Rollup and its plugins to configure our library using the command below:

To customize Rollup’s bundling and processing behavior for our project, create a rollup.config.js file at the root of the library project:

The above configuration file defines two bundles for a TypeScript library.

The first bundle, specified by the first object in the array, targets CommonJS (cjs) and ECMAScript Module (ESM) formats , creating separate files specified by the main and module  entries in the package.json . It includes plugins for handling external dependencies, resolving modules, transpiling TypeScript, and minifying the output with terser .

The second bundle, specified by the second object in the array, generates a type declaration file ( types.d.ts ) using the dts plugin, providing TypeScript type information for the library.

Another change to set up Rollup is to add the following entries to the package.json file:

Here is the explanation of the additional settings:

  • "main": "dist/cjs/index.js" : Specifies the CommonJS entry point for the library, typically used by Node.js environments
  • "module": "dist/esm/index.js" : Indicates the ECMAScript Module entry point for modern JavaScript environments, providing an optimized library version for bundlers that support ES modules
  • "types": "dist/index.d.ts" : Points to the TypeScript type declaration file, providing type information for the library
  • "scripts": {"rollup": "rollup -c --bundleConfigAsCjs", ...} : Defines a script command that runs the Rollup bundler using a configuration file ( -c) and an additional flag ( --bundleConfigAsCjs ) suggesting bundling for CommonJS. This script is used for generating the CommonJS bundle of the library

Add CSS support

In our library, we’ll use a CSS file to separate the styles away from the component file by default.

Rollup doesn’t know how to process the CSS file. To enable Rollup to handle CSS files, we need to add the plugin named rollup-plugin-postcss . Run the following command to install it:

We also need to change the Rollup configuration for CSS support in rollup.config.js :

Now, we can build the library using the Rollup script command:

After running the above command, we should see a new dist directory created in the root directory. The new directory contains the generated library artifacts.

More great articles from LogRocket:

  • Don't miss a moment with The Replay , a curated newsletter from LogRocket
  • Learn how LogRocket's Galileo cuts through the noise to proactively resolve issues in your app
  • Use React's useEffect to optimize your application's performance
  • Switch between multiple versions of Node
  • Discover how to use the React children prop with TypeScript
  • Explore creating a custom mouse cursor with CSS
  • Advisory boards aren’t just for executives. Join LogRocket’s Content Advisory Board. You’ll help inform the type of content we create and get access to exclusive meetups, social accreditation, and swag.

Leveraging TypeScript for type safety

When creating the SmartRating component, TypeScript is crucial in ensuring component type safety. For example, we define the rating component props as shown below:

We define the TypeScript interface SmartRatingProps . This interface specifies the expected shape of the component’s props, ensuring clarity and enforcing specific types.

The SmartRating.tsx file uses the defined interface in the React.FC (Functional Component) declaration. TypeScript ensures that the provided props parameter adheres to the defined SmartRatingProps interface, preventing potential runtime errors related to incorrect prop types.

For example, if we remove an existing props (i.e., theme ) and forget to update the component file, the TypeScript compiler will throw the following error at compile time:

TypeScript enforces strict typing for props, ensuring only the specified types are allowed. With the help of union types, we can define specific values for certain props, providing a clear set of options. For example, theme must be either primary or secondary . If we have a typo, the TypeScript compiler will catch it and throw the error immediately.

The SmartRatingProps interface also serves as documentation, making it clear to developers what props the component expects and their respective types. When we use IDEs with TypeScript support (i.e., VS Code), the IDE tools provide autocompletion and IntelliSense for props, enhancing the developer experience and reducing the chance of typos.

Integrating Storybook into our library

Now, the core functionality of our library is ready. It is time to add Storybook to visualize our new component to ensure it works as intended. Storybook is a development environment for UI components, allowing isolated and interactive development, testing, and documentation.

Setting up Storybook

Setting up Storybook is straightforward. Run the following command in the project root directory:

The above command will prompt us to select a project builder; we can accept the default Vite option.

After completing the command, it configures Storybook with default settings and creates necessary files and folders (e.g., .storybook directory) for Storybook integration. It also generates a stories directory within the src  directory, containing pre-built templates that serve as examples for creating our own stories.

Additionally, we also observe new dependencies and script commands in package.json:

Create a story for the SmartRating component

Storybook is successfully configured. Now, it’s time to create our first story.

Create a new file in the smartrating folder named SmartRating.stories.tsx :

In this story, we define two stories: RatingTest and RatingSecondary . They showcase the component in different scenarios, helping visualize and test its behavior within the Storybook environment.

To test the stories, run the following command:

Running the command will open a new browser tab with the component rendered in the Storybook UI as below:

The Storybook UI With A New Browser Tab

We can switch between our two stories to observe the different looks and behavior of our components. Here, we just touch the surface of Storybook’s features. For a deeper exploration, check out “ Storybook adoption guide: Overview, examples, and alternatives .”

Testing with Jest and React Testing Library

Adding tests to our component library ensures that components behave as expected, helping catch regressions and ensuring ongoing functionality as the library evolves.

Jest, combined with the React Testing Library , offers a powerful testing solution for React components. To start, install the following dependencies:

The above commands install the React Testing Library, Jest, Babel, and its Jest dependencies for transpiling and testing React components with TypeScript. We also install identity-obj-proxy , which allows Jest to treat all types of imports (CSS, LESS, and SCSS) as generic objects. Specifically, we can configure it for CSS files to prevent any errors in testing.

Next, we need to add configuration files for Jest and Babel. Create the jest.config.js and babel.config.js in the root project directory with the following contents:

In jest.config.js , we set the Jest test environment to jsdom  for simulating a browser environment for testing. Then, we set the moduleNameMapper property for CSS, LESS, and SCSS file imports in tests, allowing them to be mocked without actual styling.

In babel.config.js , we configure Babel presets for transpiling JavaScript, React, and TypeScript code in the project, ensuring compatibility and proper compilation during testing.

Now, we can create a test file named SmartRating.test.tsx in the smartrating directory:

This test uses the React Testing Library and user-event to test the SmartRating component. There are two tests:

  • The first test renders the component with specific props and asserts that the rendered component has the correct title and contains five buttons representing the stars
  • The second test simulates a user clicking each star in the SmartRating component asynchronously, then it verifies that clicking each star activates it by checking the change in the star’s CSS class to starActive

The last step is to add the following script command in package.json :

We can run the test with this command:

We should see the two green ticks for the tests:

Jest Test Showing Two Green Ticks For Successful Tests Passed

Building and managing the component library

Dependency management.

Dependencies are declarations of external packages or libraries essential for the project’s functionality, and effective dependency management is vital when constructing a component library.

Besides the typical dependencies, there are other types of dependencies including:

  • Peer dependencies : These are external dependencies that our library expects its consumers to provide. They are not bundled with the library, and instead, the consumer is expected to install them as direct dependencies
  • Dev dependencies : Dev dependencies are necessary during the development and testing phase but are not required for the runtime functionality of the project or library. For example, those testing libraries are dev dependencies

We currently have all the dependencies under the devDependencies in package.json . To manage the dependencies better, we want to move the following dependencies into peerDependencies :

Moving react and react-dom to peer dependencies in our library is beneficial because it allows consumers of the library to use their version of React. This flexibility prevents version conflicts, fostering a more seamless integration experience.

Multiple index.ts files

In our component library, we use multiple index.ts files in different levels of directories. They serve specific purposes, making our library exporting easier to organize:

  • At root directory : At the library’s root, an index.ts file can serve as the main entry point, re-exporting components or modules from various directories. This consolidates the library’s public API
  • At components directory : Use index.ts files within the component directory to export components or modules, providing a clean and organized entry point
  • At individual component directory : When organizing components into nested directories, each subdirectory can have its index.ts file, aggregating and exporting components within that directory. This modular structure aids in navigation

By organizing code with multiple index.ts files, the component library becomes more modular and maintainable, simplifying both development and integration for consumers.

Packaging and publishing to npm

Finally, we are ready to publish our component library as an npm package. Publishing the library allows it to be shared between the different development teams or the wider development communities.

Update version

Before we start the publishing process, we need to update the library version in package.json following the SemVer convention.

Semantic Versioning (SemVer) is a versioning convention for software that uses three numbers (major, minor, patch) to communicate the nature of changes:

  • major for backward-incompatible
  • minor for backward-compatible additions
  • patch for backward-compatible bug fixes

Here, we set the package version to be 1.0.0 . In future publishing, we will update the version according to the SemVer convention:

Login and publish to npm

We begin the publishing process by logging in to npm:

The command will prompt us to enter the username, password, and email. After logging in to npm, we can run the following command to publish our library:

This command publishes the package to the npm registry with public access, making it available for installation by anyone.

We can use the following command to verify that our library has been published successfully:

Congratulations! Our new React component library is published and available for download.

In this article, we walked through the process of building, packaging, and publishing a React component library using TypeScript. Developing a component library with React and TypeScript offers significant advantages, including enhanced reusability, improved type safety, centralized documentation, and potential community contributions.

This does come with its challenges. The initial setup and tool configuration can be complex, and challenges like managing versioning, ensuring backward compatibility, handling dependencies, and conducting thorough testing require careful consideration.

Despite these challenges, the benefits of creating a component library with React and TypeScript make it a valuable undertaking for achieving scalable and consistent UI development.

I hope this guide is useful to you. Please feel free to share your thoughts or leave a comment below. You can find the example source code on GitHub .

Get set up with LogRocket's modern React error tracking in minutes:

  • Visit https://logrocket.com/signup/ to get an app ID

Install LogRocket via npm or script tag. LogRocket.init() must be called client-side, not server-side

Share this:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Reddit (Opens in new window)
  • Click to share on LinkedIn (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • #typescript

how to make an project file

Stop guessing about your digital experience with LogRocket

Recent posts:.

Using Signaldb With React

Using SignalDB with React: A complete guide

SignalDB enables automatic data synchronization between your components and a local in-memory or persistent database.

how to make an project file

Extracting YouTube video data with OpenAI and LangChain

Extract YouTube video data using OpenAI and LangChain for quick, cost-effective insights without watching the videos.

how to make an project file

How to use CSS variables like a pro

By building these four simple projects, you’ll learn how CSS variables can help you write reusable, elegant code and streamline the way you build websites.

how to make an project file

Chakra UI adoption guide: Overview, examples, and alternatives

Chakra UI has emerged as a highly relevant design library. Let’s discuss what makes Chakra UI a great choice for modern applications.

how to make an project file

27 Replies to "How to build a component library with React and TypeScript"

Thanks for the wonderful article.

I getting error while running ‘rollup -c’.

dist/esm/types/index.d.ts → dist/index.d.ts… [!] Error: Could not resolve entry module (dist/esm/types/index.d.ts).

In the dist folder types are are saved in esm/types/components/Button/index.d.ts

How to resolve this?

Good article!! Btw, were you able to solve the types error?

It took me some time, but a was able to solved it! Replace “dist/esm/types/index.d.ts” by “types/index.d.ts”

{ input: “types/index.d.ts”, output: [{ file: “dist/index.d.ts”, format: “esm” }], plugins: [dts()], }

I still had an error and it took adding “rootDir” to my tsconfig. If no rootDir this error will persist.

To what did you set the rootDir?

The rollup config file is asking for src/index.ts file but not included with article. please share the contents of it. Also can you share code on a github repo?

Hello, I had the same issue. The tutorial doesn’t mention a folder structure, but the thing it that you must have an index.ts file on each component, but also must have one on the components folder itself, with something like ‘export { default as Button } from ‘./Button” (repeat to all your components), and finally another index.ts file on your src folder with something like ‘export * from ‘./components”. Basically, you must have an index.ts on Button folder, then Components folder, then SRC folder, and you should be fine.

Wooow, I dont believe this, a great article, I just want to suggest that you can creat a full react cource entitled creating a component library by react ,,, it would be great.think about it. Anyway I learned so many things from this article. thank you.

Hi, I stopped on “npm run build” with the following error:

src/index.ts → dist/cjs/index.js, dist/esm/index.js… [!] Error: Could not resolve entry module (src/index.ts). at async Promise.all (index 0)

in this tutorial there are no instructions for creating the “src/index.ts” file, but there is a reference to it in rollup.config.js in line 12

Regards, Fernando Pacheco

I created the file with this content:

import Button from ‘./components/Button’ import Input from ‘./components/Input’

export { Button, Input }

build without error

Hello all, wonderful article. Please can anyone shar how to use it in a project. I tried importing it like this into a project:

import { Button } from ‘@philz/react-ui-kit’;

but got the following error:

Could not find a declaration file for module ‘@philz/react-ui-kit’

Got the same error. Able to fix it?

I could create and publish npm package. Please refer if you need.

https://github.com/katsuharu/first-ui-component https://www.npmjs.com/package/first-ui-component

Running into Button is not exported from library error. I have an index file that

exports * from ‘./components/Button/Button.tsx’

published and installed the library into a project and getting this error.

also I’m getting a cannot find type declarations error…

Did you manage to solve it?

It’s either due to version upgrade or it’s just a bug from the beginning.

“export *” doesn’t really export default automatically. So I modified the Button.tsx and Input.tsx to not export default but specify explicitly what I want to export, the issue is resolve.

Example: original: export default Input; modified to: export { Input };

I’m getting a bunch of errors relating to styled-components:

Module not found: Error: Can’t resolve ‘styled-components’ in ‘X:\Github\component-library-test2\node_modules\@lsg2099\react-component-library-test2\dist\esm’

WARNING in ./node_modules/@lsg2099/react-component-library-test2/dist/esm/index.js Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from ‘X:\Github\component-library-test2\node_modules\@lsg2099\react-component-library-test2\src\components\Button.tsx’ file: Error: ENOENT: no such file or directory, open ‘X:\Github\component-library-test2\node_modules\@lsg2099\react-component-library-test2\src\components\Button.tsx’ @ ./src/App.tsx 7:0-64 45:37-43 @ ./src/index.tsx 7:0-24 11:33-36

WARNING in ./node_modules/@lsg2099/react-component-library-test2/dist/esm/index.js Module Warning (from ./node_modules/source-map-loader/dist/cjs.js): Failed to parse source map from ‘X:\Github\component-library-test2\node_modules\@lsg2099\react-component-library-test2\src\components\Input.tsx’ file: Error: ENOENT: no such file or directory, open ‘X:\Github\component-library-test2\node_modules\@lsg2099\react-component-library-test2\src\components\Input.tsx’ @ ./src/App.tsx 7:0-64 45:37-43 @ ./src/index.tsx 7:0-24 11:33-36

Thats for starters. Most of the others are probably a result of the above failings. Did anyone else have this issue?

hi. where you able to resolve this?

You need add package ‘rollup-plugin-sass-modules’, after that add import it to rollup.config.js import sassModules from ‘rollup-plugin-sass-modules’;

and use it in rules:

sassModules({include: [‘**/*.scss’, ‘**/*.sass’]})

Anybody having “Could not find a declaration file for module” error after publishing your library, You need to add type properties inside package.json.

“types”: “./dist/index.d.ts”,

hi. I getting error while running ‘rollup -c’. [!] Error: Could not resolve entry module (rollup.config.js).

I have a similar kind of task, I have a library which is created in typescript and we are using tsc and tsconfig.json to create the package in dist. We are using this package to link to a nextjs project and utilizing the library there, however the issuw we are facing is that we are not able to debug the component from the next js app, we have the source map on in the package but yet while debugging we are not able to get the debugger. We are using visual studio code for executing the next app

Thanks for the article. Apparently it’s just marketing given that there’s been lots of bug reports and no answers or revisions by the “author”

For me, for example, it says “Now, let’s create our button component:” but it never says what to name the file for that. Same with the input component. No filename is given.

I guess they were src/component/Button.tsx and src/component/Input.tsx but no idea as I got to “npm run buld” and I got

[!] RollupError: Node tried to load your configuration file as CommonJS even though it is likely an ES module. To resolve this, change the extension of your configuration to “.mjs”, set “type”: “module” in your package.json file or pass the “–bundleConfigAsCjs” flag.

That’s because at line 7 the rollup.config.js file uses “require” but that’s not allowed in a module. The author must have had some external options setup for that to work as there’s no way it works by default.

Changed that to

import fs from ‘fs’; const packageJson = JSON.parse(fs.readFileSync(“./package.json”, ‘utf8’));

As others pointed out there is no `src/ndex.js` in the article. Tried what someone else posted but then I got

> rollup -c

src/index.ts → dist/cjs/index.js, dist/esm/index.js… created dist/cjs/index.js, dist/esm/index.js in 604ms

dist/esm/types/index.d.ts → dist/index.d.ts… [!] RollupError: Could not resolve entry module “dist/esm/types/index.d.ts”. RollupError: Could not resolve entry module “dist/esm/types/index.d.ts”. at error (/Users/gman/src/spector2/node_modules/rollup/dist/shared/rollup.js:206:30) at ModuleLoader.loadEntryModule (/Users/gman/src/spector2/node_modules/rollup/dist/shared/rollup.js:23140:20) at async Promise.all (index 0)

Basically AFAIK you should ignore this tutorial and go find another that actually works.

As others have said, this isn’t actually a good guide. Which is a bummer because I’ve seen other good ones from LogRocket. I’m unfortunately adding to the search shenanigans by interacting with it. But I do believe in other LogRocket guides so I feel good about it.

rollup.config.js output: [{ file: “dist/types.d.ts”, format: “es” }], –> output: [{ file: “dist/index.d.ts”, format: “es” }], rollup-plugin-terser deprecated use @rollup/plugin-terser

Thanks for the article, thanks for the april 2023 update, but following this instructions still getting error on 04 december 2023:

1) rollup-plugin-terser deprecated => use @rollup/plugin-terser (but still get an error) 2) Could not find module ‘tslib’ => npm i -D tslib 3) Support for the experimental syntax ‘jsx’ isn’t currently enabled => npm i -D @babel/preset-env @babel/preset-typescript @babel/preset-react and add a babel.config.js with: module.exports = {presets: [‘@babel/preset-env’, ‘@babel/preset-typescript’, ‘@babel/preset-react’],}; 4) clean the dist folder before run => npm i -D rollup-plugin-cleaner 5) types in package.json dont corespond to output in rollup.config.js , the most important part of this tutorial is totally unchecked, in packege.json declare: “main”: “dist/cjs/index.js”, “module”: “dist/esm/index.js”, but these files are not in dist folder after build….

I didnt get into Storybook, I was able to launch tests with 0 errors, but I wasn’t be able to import its components to another project.

i made with latest Rollup library and another changes, pls see this https://github.com/whossein/simple-uikit-react-package https://www.npmjs.com/package/uikit-new

Leave a Reply Cancel reply

Search code, repositories, users, issues, pull requests...

Provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications

ChatGPT-Style WebUI for LLMs (Formerly Ollama WebUI)


Folders and files, repository files navigation, open webui (formerly ollama webui) 👋.

GitHub stars

ChatGPT-Style Web Interface for Ollama 🦙

Also check our sibling project, Open WebUI Community , where you can discover, download, and explore customized Modelfiles for Ollama! 🦙🔍

🖥️ Intuitive Interface : Our chat interface takes inspiration from ChatGPT, ensuring a user-friendly experience.

📱 Responsive Design : Enjoy a seamless experience on both desktop and mobile devices.

⚡ Swift Responsiveness : Enjoy fast and responsive performance.

🚀 Effortless Setup : Install seamlessly using Docker or Kubernetes (kubectl, kustomize or helm) for a hassle-free experience.

💻 Code Syntax Highlighting : Enjoy enhanced code readability with our syntax highlighting feature.

✒️🔢 Full Markdown and LaTeX Support : Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.

📚 Local RAG Integration : Dive into the future of chat interactions with the groundbreaking Retrieval Augmented Generation (RAG) support. This feature seamlessly integrates document interactions into your chat experience. You can load documents directly into the chat or add files to your document library, effortlessly accessing them using # command in the prompt. In its alpha phase, occasional issues may arise as we actively refine and enhance this feature to ensure optimal performance and reliability.

🌐 Web Browsing Capability : Seamlessly integrate websites into your chat experience using the # command followed by the URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions.

📜 Prompt Preset Support : Instantly access preset prompts using the / command in the chat input. Load predefined conversation starters effortlessly and expedite your interactions. Effortlessly import prompts through Open WebUI Community integration.

👍👎 RLHF Annotation : Empower your messages by rating them with thumbs up and thumbs down, facilitating the creation of datasets for Reinforcement Learning from Human Feedback (RLHF). Utilize your messages to train or fine-tune models, all while ensuring the confidentiality of locally saved data.

🏷️ Conversation Tagging : Effortlessly categorize and locate specific chats for quick reference and streamlined data collection.

📥🗑️ Download/Delete Models : Easily download or remove models directly from the web UI.

⬆️ GGUF File Model Creation : Effortlessly create Ollama models by uploading GGUF files directly from the web UI. Streamlined process with options to upload from your machine or download GGUF files from Hugging Face.

🤖 Multiple Model Support : Seamlessly switch between different chat models for diverse interactions.

🔄 Multi-Modal Support : Seamlessly engage with models that support multimodal interactions, including images (e.g., LLava).

🧩 Modelfile Builder : Easily create Ollama modelfiles via the web UI. Create and add characters/agents, customize chat elements, and import modelfiles effortlessly through Open WebUI Community integration.

⚙️ Many Models Conversations : Effortlessly engage with various models simultaneously, harnessing their unique strengths for optimal responses. Enhance your experience by leveraging a diverse set of models in parallel.

💬 Collaborative Chat : Harness the collective intelligence of multiple models by seamlessly orchestrating group conversations. Use the @ command to specify the model, enabling dynamic and diverse dialogues within your chat interface. Immerse yourself in the collective intelligence woven into your chat environment.

🤝 OpenAI API Integration : Effortlessly integrate OpenAI-compatible API for versatile conversations alongside Ollama models. Customize the API Base URL to link with LMStudio, Mistral, OpenRouter, and more .

🔄 Regeneration History Access : Easily revisit and explore your entire regeneration history.

📜 Chat History : Effortlessly access and manage your conversation history.

📤📥 Import/Export Chat History : Seamlessly move your chat data in and out of the platform.

🗣️ Voice Input Support : Engage with your model through voice interactions; enjoy the convenience of talking to your model directly. Additionally, explore the option for sending voice input automatically after 3 seconds of silence for a streamlined experience.

⚙️ Fine-Tuned Control with Advanced Parameters : Gain a deeper level of control by adjusting parameters such as temperature and defining your system prompts to tailor the conversation to your specific preferences and needs.

🔗 External Ollama Server Connection : Seamlessly link to an external Ollama server hosted on a different address by configuring the environment variable.

🔐 Role-Based Access Control (RBAC) : Ensure secure access with restricted permissions; only authorized individuals can access your Ollama, and exclusive model creation/pulling rights are reserved for administrators.

🔒 Backend Reverse Proxy Support : Bolster security through direct communication between Open WebUI backend and Ollama. This key feature eliminates the need to expose Ollama over LAN. Requests made to the '/ollama/api' route from the web UI are seamlessly redirected to Ollama from the backend, enhancing overall system security.

🌟 Continuous Updates : We are committed to improving Open WebUI with regular updates and new features.

🔗 Also Check Out Open WebUI Community!

Don't forget to explore our sibling project, Open WebUI Community , where you can discover, download, and explore customized Modelfiles. Open WebUI Community offers a wide range of exciting possibilities for enhancing your chat interactions with Ollama! 🚀

How to Install 🚀

🌟 Important Note on User Roles and Privacy:

Admin Creation: The very first account to sign up on Open WebUI will be granted Administrator privileges . This account will have comprehensive control over the platform, including user management and system settings.

User Registrations: All subsequent users signing up will initially have their accounts set to Pending status by default. These accounts will require approval from the Administrator to gain access to the platform functionalities.

Privacy and Data Security: We prioritize your privacy and data security above all. Please be reassured that all data entered into Open WebUI is stored locally on your device. Our system is designed to be privacy-first, ensuring that no external requests are made, and your data does not leave your local environment. We are committed to maintaining the highest standards of data privacy and security, ensuring that your information remains confidential and under your control.

Steps to Install Open WebUI

Before you begin.

Installing Docker:

For Windows and Mac Users:

  • Download Docker Desktop from Docker's official website .
  • Follow the installation instructions provided on the website. After installation, open Docker Desktop to ensure it's running properly.

For Ubuntu and Other Linux Users:

  • Open your terminal.
  • Set up your Docker apt repository according to the Docker documentation
  • Update your package index: sudo apt-get update
  • Install Docker using the following command: sudo apt-get install docker-ce docker-ce-cli containerd.io
  • Verify the Docker installation with: sudo docker run hello-world This command downloads a test image and runs it in a container, which prints an informational message.

Ensure You Have the Latest Version of Ollama:

  • Download the latest version from https://ollama.com/ .

Verify Ollama Installation:

  • After installing Ollama, check if it's working by visiting in your web browser. Remember, the port number might be different for you.

Installing with Docker 🐳

Important: When using Docker to install Open WebUI, make sure to include the -v open-webui:/app/backend/data in your Docker command. This step is crucial as it ensures your database is properly mounted and prevents any loss of data.

If Ollama is on your computer , use this command:

To build the container yourself , follow these steps:

After installation, you can access Open WebUI at http://localhost:3000 .

Using Ollama on a Different Server

To connect to Ollama on another server, change the OLLAMA_API_BASE_URL to the server's URL:

Or for a self-built container:

Installing Ollama and Open WebUI Together

Using docker compose.

If you don't have Ollama yet, use Docker Compose for easy installation. Run this command:

For GPU Support: Use an additional Docker Compose file:

To Expose Ollama API: Use another Docker Compose file:

Using run-compose.sh Script (Linux or Docker-Enabled WSL2 on Windows)

Give execute permission to the script:

For CPU-only container:

For GPU support (read the note about GPU compatibility):

To build the latest local version, add --build :

Alternative Installation Methods

For other ways to install, like using Kustomize or Helm, check out INSTALLATION.md . Join our Open WebUI Discord community for more help and information.

Updating your Docker Installation

In case you want to update your local Docker installation to the latest version, you can do it performing the following actions:

In the last line, you need to use the very same command you used to install (local install, remote server, etc.)

Moving from Ollama WebUI to Open WebUI

Given recent name changes, the docker image has been renamed. Additional steps are required to update for those people that used Ollama WebUI previously and want to start using the new images.

Updating to Open WebUI without keeping your data

If you want to update to the new image but don't want to keep any previous data like conversations, prompts, documents, etc. you can perform the following steps:

For example, for local installation it would be docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main . For other installation commands, check the relevant parts of this README document.

Migrating your contents from Ollama WebUI to Open WebUI

If you want to update to the new image migrating all your previous settings like conversations, prompts, documents, etc. you can perform the following steps:

Once you verify that all the data has been migrated you can erase the old volumen using the following command:

How to Install Without Docker

While we strongly recommend using our convenient Docker container installation for optimal support, we understand that some situations may require a non-Docker setup, especially for development purposes. Please note that non-Docker installations are not officially supported, and you might need to troubleshoot on your own.

Project Components

Open WebUI consists of two primary components: the frontend and the backend (which serves as a reverse proxy, handling static frontend files, and additional features). Both need to be running concurrently for the development environment.

The backend is required for proper functionality

Requirements 📦

  • 🐰 Bun >= 1.0.21 or 🐢 Node.js >= 20.10
  • 🐍 Python >= 3.11

Build and Install 🛠️

Run the following commands to install:

You should have Open WebUI up and running at http://localhost:8080/ . Enjoy! 😄


See TROUBLESHOOTING.md for information on how to troubleshoot and/or join our Open WebUI Discord community .

What's Next? 🚀

Here are some exciting tasks on our roadmap:

  • 🔊 Local Text-to-Speech Integration : Seamlessly incorporate text-to-speech functionality directly within the platform, allowing for a smoother and more immersive user experience.
  • 🛡️ Granular Permissions and User Groups : Empower administrators to finely control access levels and group users according to their roles and responsibilities. This feature ensures robust security measures and streamlined management of user privileges, enhancing overall platform functionality.
  • 🔄 Function Calling : Empower your interactions by running code directly within the chat. Execute functions and commands effortlessly, enhancing the functionality of your conversations.
  • ⚙️ Custom Python Backend Actions : Empower your Open WebUI by creating or downloading custom Python backend actions. Unleash the full potential of your web interface with tailored actions that suit your specific needs, enhancing functionality and versatility.
  • 🔧 Fine-tune Model (LoRA) : Fine-tune your model directly from the user interface. This feature allows for precise customization and optimization of the chat experience to better suit your needs and preferences.
  • 🧠 Long-Term Memory : Witness the power of persistent memory in our agents. Enjoy conversations that feel continuous as agents remember and reference past interactions, creating a more cohesive and personalized user experience.
  • 🧪 Research-Centric Features : Empower researchers in the fields of LLM and HCI with a comprehensive web UI for conducting user studies. Stay tuned for ongoing feature enhancements (e.g., surveys, analytics, and participant tracking) to facilitate their research.
  • 📈 User Study Tools : Providing specialized tools, like heat maps and behavior tracking modules, to empower researchers in capturing and analyzing user behavior patterns with precision and accuracy.
  • 📚 Enhanced Documentation : Elevate your setup and customization experience with improved, comprehensive documentation.

Feel free to contribute and help us make Open WebUI even better! 🙌

Supporters ✨

A big shoutout to our amazing supporters who's helping to make this project possible! 🙏

Platinum Sponsors 🤍

  • We're looking for Sponsors!


Special thanks to Prof. Lawrence Kim and Prof. Nick Vincent for their invaluable support and guidance in shaping this project into a research endeavor. Grateful for your mentorship throughout the journey! 🙌

This project is licensed under the MIT License - see the LICENSE file for details. 📄

If you have any questions, suggestions, or need assistance, please open an issue or join our Open WebUI Discord community to connect with us! 🤝

Created by Timothy J. Baek - Let's make Open Web UI even more amazing together! 💪

Security policy

Sponsor this project, contributors 49.


  • Svelte 67.8%
  • Python 18.1%
  • TypeScript 9.9%
  • Dockerfile 0.5%
  • Skip to main content
  • Keyboard shortcuts for audio player

Trump ordered to pay over $355M for fraudulent business practices in New York

Ximena Bustillo headshot

Ximena Bustillo

how to make an project file

Former U.S. President Donald Trump and his lawyers Christopher Kise and Alina Habba attend the closing arguments in the Trump Organization civil fraud trial on Jan. 11 in New York City. Shannon Stapleton/Getty Images hide caption

Former U.S. President Donald Trump and his lawyers Christopher Kise and Alina Habba attend the closing arguments in the Trump Organization civil fraud trial on Jan. 11 in New York City.

A New York judge has ordered former President Donald Trump and executives at the Trump Organization to pay over $364 million in a civil fraud case, handing a win to New York Attorney General Letitia James, who sued Trump and his associates after a three-year investigation.

The Friday decision from Judge Arthur Engoron orders Trump and his flagship organization to pay the bulk of that amount: almost $355 million. Trump's two sons and co-defendants, Eric Trump and Donald Trump Jr., are each liable for $4 million. Allen Weisselberg, a former Trump Organization executive, is liable for $1 million. The total is even higher with interest — more than $450 million overall, according to the attorney general's office.

"Their complete lack of contrition and remorse borders on pathological. They are accused only of inflating asset values to make more money. The documents prove this over and over again. This is a venial sin, not a mortal sin," Engoron wrote in the court filing. "Yet, defendants are incapable of admitting the error of their ways."

Trump himself called the decision a "Complete and Total SHAM" in an emailed statement and repeated his accusation that the justice system overall is politically biased against him.

James, however, declared that "justice has been served."

"This is a tremendous victory for this state, this nation, and for everyone who believes that we all must play by the same rules — even former presidents," the state attorney general said in a statement.

Additional consequences

The judge also decided to limit Trump and his co-defendants' ability to do business in the Empire State. Trump and his companies are prohibited from serving as an officer or director of any New York business or applying for loans for three years. His sons are limited from similar leadership roles for two years.

Jeffrey McConney, ex-controller of the Trump Organization and also a defendant, was not ordered to pay any amount, but he and Weisselberg are permanently barred from serving in the financial control function of any New York corporation or similar business entity registered or licensed in New York state.

"This Court is not constituted to judge morality; it is constituted to find facts and apply the law. In this particular case, in applying the law to the facts, the Court intends to protect the integrity of the financial marketplace and, thus, the public as a whole," Engoron wrote.

The ruling comes at a crucial time for Trump, the front-runner for the Republican presidential nomination. Engoron's decision comes a day after another judge set the date for what could be Trump's first criminal trial, related to hush money payments issued during the 2016 election .

Trump's New York hush money trial will start March 25

Trump's New York hush money trial will start March 25

He is facing a combined 91 state and federal charges, including several related to his role to stay in office after he lost the 2020 presidential election to Joe Biden. But the charges have done little to dent Trump's popularity among his base. Instead, the charges appear to have bolstered his credentials, potentially setting up a rematch with Biden.

The facts of the case

Trump and his two older sons are accused of knowingly committing fraud by submitting financial statements that inflated the value of their properties and other assets. The lawsuit alleges that from 2011 to 2021, Donald Trump and his organization created more than 200 false valuations to inflate his net worth by billions of dollars with the goal of getting better business, insurance and banking deals.

Engoron had already determined that there was fraud and that the former president, his sons and other executives were liable.

Throughout the trial, legal teams argued whether the value of notable Trump properties, such as Manhattan's Trump Tower and 40 Wall Street, were inflated deliberately.

Documents shown during trial ranged from spreadsheets to signed financial statements. In one example, the attorney general's legal team showed that Trump's triplex in his eponymously named Manhattan building was marked as being almost 11,000 square feet in 1994 and later as 30,000 square feet. A Forbes magazine article in 2017 originally shed light on the discrepancy.

The former president and three of his children, Donald Jr., Eric and Ivanka, who is not a defendant, all took the stand to testify about the valuation process and their involvement in the Trump Organization. Testifying in November , Trump argued that the estimated property values were actually conservative, and he said that he relied on others to compile the statements. His sons also testified that they relied on others , including their accounting firm, to come up with the numbers — even as emails and documents showed the Trumps ultimately approved them.

In closing briefs, Trump's team doubled down on the argument that the three members of the Trump family did not have knowledge or involvement in the creation, preparation or use of the fraudulent financial statements.

Closing arguments concludes in Trump civil fraud trial in New York

Closing arguments concludes in Trump civil fraud trial in New York

Trump says he won't testify as planned in his civil fraud trial

Trump says he won't testify as planned in his civil fraud trial

Who else testified.

Witnesses included former Trump allies such as Michael Cohen and Weisselberg , who was also a defendant.

Cohen testified that it was his responsibility, along with that of Weisselberg , "to reverse-engineer the very different asset classes, increase those assets in order to achieve the numbers" Trump had asked for.

Weisselberg, however, testified that he couldn't remember whether he discussed the financial statements with Trump as they were finalized.

The decision on Friday comes as Trump continues to campaign for the presidency. He will likely appeal this ruling, as he has in the other cases where he has suffered legal setbacks. It may take years before he parts with any money in the case.

New York judge brings back gag order on Donald Trump in civil fraud trial

New York judge brings back gag order on Donald Trump in civil fraud trial

  • trump corp.
  • letetia james
  • judge arthur engoron
  • Former President Trump
  • new york state

how to make an project file

Save a project file as a template

When you save a project file as a template, you do more than just save time. Templates help ensure the success of future projects by capturing successful strategies from past projects, such as task relationships that proved effective, people or other resources that were especially productive, or view and reporting methods that helped communicate critical project events and problems to upper management. Here's how to make a template.

Click File > Export .

In the File Types section click Save Project as File .

Save as template image

In the File name box, type the template name.

Make sure that Project Template appears in the Save as type box.

Click Save .

In the next dialog box, check the boxes for data you want to remove from your project file, and then click Save . For example, you may want to exclude team members’ salary or other cost information.

Once you save a project as a template, you can create a new project from the template .


Need more help?

Want more options.

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

how to make an project file

Microsoft 365 subscription benefits

how to make an project file

Microsoft 365 training

how to make an project file

Microsoft security

how to make an project file

Accessibility center

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.

how to make an project file

Ask the Microsoft Community

how to make an project file

Microsoft Tech Community

how to make an project file

Windows Insiders

Microsoft 365 Insiders

Was this information helpful?

Thank you for your feedback.


  1. How to make project file

    how to make an project file

  2. How to decorate front page of project file/ complete tutorial/ Very

    how to make an project file

  3. File Decoration Idea

    how to make an project file

  4. Sample Session > Creating a Project File

    how to make an project file

  5. How To Decorate Project File First Page

    how to make an project file

  6. How to decorate front page of project file/ complete tutorial/ Very

    how to make an project file


  1. project file class 11th (Pol. science) in hindi medium how to make project file chapter 2 #politics

  2. How to make project file cover page design in word| word main project file ka cover page kese banaye

  3. Punjabi Project File Front Page Decoration

  4. how to make a project file cover decoration| diy easy to make a project file cover decoration #short

  5. how to make project file frunt page #new #viral #short #likeandsuscribe 🤟🤟🤟

  6. How to make project|| How to make project file on to Preserve cultural heritage| #easyproject #art


  1. Create a new project

    You can always create a new project from a template or another project. But if you need to start fresh, you can create a blank project file: Click File > New > Blank Project. That gives you a blank canvas to work on. If you're not sure what to do next, read on. Note: For a quick introduction to more basic tasks in Project, see Project Quick Start.


    Hi guys! This is a different video than usual, which deals with the issue of difficulty in making project files. A MUST WATCH FOR EVERY SCHOOL/ COLLEGE STUDE...

  3. Create a project in Project desktop

    Create a project Next: Project Online Quick Start Create a project in Project desktop In Project, you can: Create project plans. Build project teams and allocate resources. See different views of task and resources. Measure progress. Manage budgets. Notes:

  4. Microsoft Project Example

    Step 1: Create a new project Choose Blank Project. You will see a blank window. First, let's create a Project Summary Task. This is like an overall "wrapper" task that contains our entire project. Here's what you should see: Give your project a suitable name: Don't worry about the duration and the dates - we'll take care of this later.

  5. Open a project file

    Open a project file Project Online Desktop Client Project Professional 2021 More... Opening a project from your computer is pretty much the same as opening a file in any Office program: Click File > Open. Click Computer, and then on the right, choose a recent folder or click Browse. Click the project you want, and then click Open.

  6. Learn to Create a Master Project File in MS Project, you can ...

    In this MS Project Made Easy video I explain how to create a "Master Project File". A master project file allows you to view and edit all your individual pr...

  7. Create and save a project

    That creates a new file. If you look up at the top of the screen, you'll see that the program names this file "Project1." If a project is already open, you can use a keyboard shortcut to create a ...

  8. How to Create a Successful Project (for School) (with Pictures)

    1 Begin early. It's always best to begin an assignment as soon as you get it. Your teacher has given you a long time to do it for reason; it's going to take that much time to do it. Begin by making a plan early, so you have time to complete everything you need to do. That way, you won't be working the night before to finish the project 2

  9. Project Creator

    Import your task list Create a new project by importing your existing task lists. When you create or import your tasks, they can be seen in any of our project views. Import Excel, CSV or MSP files—all your data is carried over Use one of our industry-specific templates to help you get started

  10. Guide to files and projects

    Structure projects Use projects to group files in any way that makes sense to you. The way your company or agency is organized may inform some of that structure. It's not possible to create subfolders within your projects. This is something to bear in mind when deciding how to structure your files and projects.

  11. How to Build a Programming Project Step by Step

    So, I broke the project down into these parts: Installing the VSCode extension. Getting the content of an active file. Breaking down the content of the file into characters. (Word => w, o, r, d). Listening to key-presses. Displaying the character one by one whenever any key was pressed.

  12. Create and run your first project

    First steps Create and run your first project Create and run your first project Last modified: 11 January 2024 Before you start Ensure that the following prerequisites are met: You are working with PyCharm Community or Professional You have installed Python itself. If you're using macOS or Linux, your computer already has Python installed.

  13. Creating Project Files

    Creating Project Files Project files contain all the information required by qmake to build your application, library, or plugin.

  14. How to Do a Project: 10 Steps (with Pictures)

    Add visual aids like charts, pictures, and maps to enhance the project. Add a tactile part to your project, like a short video. 4. Review the project rubric to make sure you've hit your requirements. Double check the rubric provided to you by your teacher and do a self-assessment of your project.

  15. Tips to Make a Good Project File

    1- Start on the project file early- Students often leave the project files for the last minute assuming it is a not so important thing to do. however, it is observed that the candidates who start working early on their projects end up scoring well.

  16. Create an MSBuild project file from scratch

    The walkthrough follows these steps: Extend the PATH environment variable. Create a minimal application source file. Create a minimal MSBuild project file. Build the application by using the project file. Add properties to control the build. Control the build by changing property values. Add targets to the build.

  17. How to Decorate a Project File (with Pictures)

    Use a ruler to measure the length and width of the project file. Then: Cut the ribbon or tape into four pieces—two that match the length of the file and two that match the width of it. Stick the washi tape to the edges of each side, or use glue dots to attach the ribbon. 3. Draw the border by hand if you prefer.

  18. Create a Project

    For example, if you create business logos, the first tier may include 5 logo design drafts, 5 revisions to the client's logo choice, and the final logo in a printable file and vector file. The next tier may include more choices and revisions, plus add a 3-D mockup and stationery design.

  19. Create a new project from another project or template

    Start with a template Click File > New. Search for templates in the box or click the template you want below. In the preview dialog box, click Create. Make sure that the resources, tasks, and durations in the template are right for your project. Of course, you're now free to change them as you see fit.

  20. How To Make a Project File for class 10/12 Boards

    STUDY TIPS BY SIMRAN SAHNI: https://www.youtube.com/playlist?list=PLlz6Wm71kc1K-DHSvFWn5idTwuGBEZkoLInstagram link :https://instagram.com/sii_sahni/Class 12 ...

  21. VS Code How to Create a New Project

    Start VS Code. Select "File > Open Folder" (or "File > Open" in macOS) from VS Code's main menu. In the selection dialog, create a new folder, rename it accordingly, then click "Select ...

  22. How to Create a Scrivener Project to Use As Your Second Brain

    Exceptions are PDF files and media files, such as audio and video files, which can only reside in the Research folder. However, you can make sub-folders in the Research folder for each of these types of files. Scrivener has a built-in PDF viewer, with controls in the window footer that make it easy to flip through pages in these documents.

  23. Google's Gemini is now in everything. Here's how you can try it out

    Google has been working hard to make sure its products are safe to use. But no amount of testing can anticipate all the ways that tech will get used and misused once it is released.

  24. How to build a component library with React and TypeScript

    Hello, I had the same issue. The tutorial doesn't mention a folder structure, but the thing it that you must have an index.ts file on each component, but also must have one on the components folder itself, with something like 'export { default as Button } from './Button" (repeat to all your components), and finally another index.ts file on your src folder with something like 'export ...

  25. GitHub

    Special thanks to Prof. Lawrence Kim and Prof. Nick Vincent for their invaluable support and guidance in shaping this project into a research endeavor. Grateful for your mentorship throughout the journey! 🙌. License 📜. This project is licensed under the MIT License - see the LICENSE file for details. 📄. Support 💬

  26. N.Y. judge orders Trump and executives to pay over $364 million in

    Former U.S. President Donald Trump and his lawyers Christopher Kise and Alina Habba attend the closing arguments in the Trump Organization civil fraud trial on Jan. 11 in New York City.

  27. How to try Sora, OpenAI's AI video generator

    8 wild Sora AI videos generated by the new OpenAI tool you need to see; OpenAI announces Sora, a wild AI text-to-video model. See it in action. OpenAI terminates accounts of confirmed state ...

  28. Save a project file as a template

    In the File name box, type the template name. Make sure that Project Template appears in the Save as type box. Click Save. In the next dialog box, check the boxes for data you want to remove from your project file, and then click Save. For example, you may want to exclude team members' salary or other cost information. Click OK.